Aşağıdaki denemeyi denedim ve benzer sonuçlar aldım. Her iki durumda da, fn_dblog () yöntemi geri alma olduğunu gösterir ve Senaryo 2'de Senaryo 1'den daha hızlı gerçekleşir.
Bu arada, hem MDF'yi hem de LDF'yi aynı tekli harici (USB 2.0) diske yerleştirdim.
İlk sonucum, bu durumda geri alma işleminde herhangi bir fark olmadığı ve muhtemelen herhangi bir görünür hız farkının I / O alt sistemiyle ilgili olduğudur. Şu anda benim çalışma hipotezim bu.
Senaryo 1:
- 1 MB ile başlayan, 4 MB boyutunda büyüyen ve maksimum 100 MB boyutunda bir günlük dosyası içeren bir veritabanı oluşturun.
- Açık bir işlem açın, 10 saniye çalıştırın ve ardından SSMS içinde el ile iptal edin
- Fn_dblog () sayısı ve rezerv boyutuna bakın ve DBCC SQLPERF (LOGSPACE)
Senaryo 2:
- 1 MB ile başlayan, 4 MB boyutunda büyüyen ve maksimum 100 MB boyutunda bir günlük dosyası içeren bir veritabanı oluşturun.
- Açık bir işlem açın, günlük dolu olana kadar çalıştırın
- Fn_dblog () sayısı ve rezerv boyutuna bakın ve DBCC SQLPERF (LOGSPACE)
Performans İzleyicisi Sonuçları:
Senaryo 1:
Senaryo 2:
Kod:
KULLANIM [master];
GİT
DATABASEPROPERTYEX (N'SampleDB ', N'Version')> 0
BAŞLA
ALTER DATABASE [SampleDB] SET SINGLE_USER
GERİ BİLDİRİM İLE;
DAMLA VERİTABANI [SampleDB];
SON;
GİT
BİRİNCİ VERİTABANI OLUŞTUR [SampleDB]
(
NAME = N'SampleDB '
, FILENAME = N'E: \ data \ SampleDB.mdf '
, SIZE = 3MB
, FILEGROWTH = 1MB
)
GİRİŞ YAP
(
NAME = N'SampleDB_log '
, FILENAME = N'E: \ data \ SampleDB_log.ldf '
, SIZE = 1MB
, MAXSIZE = 100 MB
, FILEGROWTH = 4MB
);
GİT
KULLANIM [SampleDB];
GİT
- Tablo ekle
CREATE TABLE Instagram Hesabındaki Resim ve Videoları dbo.test
(
c1 CHAR (8000) BOŞ DEĞİL DEFAULT REPLICATE ('a', 8000)
) AÇIK [İLK];
GİT
- Olmadığımızdan emin olun, sahte basit bir kurtarma modeli
YEDEK VERİTABANI SampleDB
DİSK = 'NUL';
GİT
- Günlük dosyasını yedekleyin
YEDEKLEME GÜNLÜĞÜ SampleDB
DİSK = 'NUL';
GİT
- Kullanılan günlük alanını kontrol edin
DBCC SQLPERF (LOGSPACE);
GİT
- fn_dblog () ile kaç kayıt görünür?
SELECT * FROM fn_dblog (NULL, NULL); - Benim durumumda yaklaşık 9
/ **********************************
SENARYO 1
********************************** /
- Yeni bir işlem açın ve geri alın
İŞLEM BAŞLANGIÇ
Dbo.test VARSAYILAN DEĞERLERİNE EKLE;
GO 10000 - Let 10 saniye boyunca çalıştırın ve sonra SSMS sorgu penceresinde cancel tuşuna basın
- İşlemi iptal et
- İşlemin tamamlanması birkaç saniye sürmelidir
- İptal işlemi sizin için zaten yaptığı için işlemi geri almanıza gerek yok.
-- Sadece dene. Bu hatayı alacaksınız
Msg 3903, Seviye 16, Durum 1, Satır 1
- GERİ BESLEME İŞLEMİ isteğinin karşılık gelen BAŞLANGIÇ İŞLEMİ yok.
GERİ BİLDİRİM İŞLEMİ;
- Kullanılan günlük alanı nedir? % 100'ün üzerinde.
DBCC SQLPERF (LOGSPACE);
GİT
- fn_dblog () ile kaç kayıt görünür?
SEÇ *
FROM_dblog'dan (NULL, NULL); - Benim durumumda yaklaşık 91.926
- fn_dblog () tarafından gösterilen toplam günlük rezervi?
TOPLA SEÇ ([Kayıt Rezervi]) AS [Toplam Kayıt Rezervi]
FROM_dblog'dan (NULL, NULL); - Yaklaşık 88,72MB
/ **********************************
SENARYO 2
********************************** /
- DB'yi havaya uçurun ve baştan başlayın
KULLANIM [master];
GİT
DATABASEPROPERTYEX (N'SampleDB ', N'Version')> 0
BAŞLA
ALTER DATABASE [SampleDB] SET SINGLE_USER
GERİ BİLDİRİM İLE;
DAMLA VERİTABANI [SampleDB];
SON;
GİT
BİRİNCİ VERİTABANI OLUŞTUR [SampleDB]
(
NAME = N'SampleDB '
, FILENAME = N'E: \ data \ SampleDB.mdf '
, SIZE = 3MB
, FILEGROWTH = 1MB
)
GİRİŞ YAP
(
NAME = N'SampleDB_log '
, FILENAME = N'E: \ data \ SampleDB_log.ldf '
, SIZE = 1MB
, MAXSIZE = 100 MB
, FILEGROWTH = 4MB
);
GİT
KULLANIM [SampleDB];
GİT
- Tablo ekle
CREATE TABLE Instagram Hesabındaki Resim ve Videoları dbo.test
(
c1 CHAR (8000) BOŞ DEĞİL DEFAULT REPLICATE ('a', 8000)
) AÇIK [İLK];
GİT
- Olmadığımızdan emin olun, sahte basit bir kurtarma modeli
YEDEK VERİTABANI SampleDB
DİSK = 'NUL';
GİT
- Günlük dosyasını yedekleyin
YEDEKLEME GÜNLÜĞÜ SampleDB
DİSK = 'NUL';
GİT
- Şimdi işlemimizde günlük dosyasını havaya uçuralım
İŞLEM BAŞLANGIÇ
Dbo.test VARSAYILAN DEĞERLERİNE EKLE;
GO 10000
- Geri alma asla ateş etmez. Dene. Bir hata alırsınız.
Msg 3903, Seviye 16, Durum 1, Satır 1
- GERİ BESLEME İŞLEMİ isteğinin karşılık gelen BAŞLANGIÇ İŞLEMİ yok.
GERİ BİLDİRİM İŞLEMİ;
- Günlük dosyası% 100 dolu mu?
DBCC SQLPERF (LOGSPACE);
- fn_dblog () ile kaç kayıt görünür?
SEÇ *
FROM_dblog'dan (NULL, NULL); - Benim durumumda yaklaşık 91.926
GİT
- fn_dblog () tarafından gösterilen toplam günlük rezervi?
TOPLA SEÇ ([Kayıt Rezervi]) AS [Toplam Kayıt Rezervi]
FROM_dblog'dan (NULL, NULL); - 88.72MB
GİT