Bir SQL Server günlük dosyasını küçültmek performansı nasıl etkiler?


19

Bazı 2GB boyutunda bir veri dosyası olan bir SQL Server 2008 veritabanı var, ancak günlük dosyası 8GB üzerinde. 2008 öncesi veritabanları ile 'Yedekleme günlüğü' ve TRUNCATE_ONLYseçeneğini kullanabilirim ancak 2008 ve sonraki veritabanlarında artık mevcut değil.

Günlük dosyasını kesen bir komut dosyası var:

USE [MyDatabase]
GO
ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT
DBCC shrinkfile('MyDatabase_log', 1)
ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT
GO

Bu günlük dosyasını tamamen keser, ama sorum şu: Bu performansı etkiler mi?

Günlük olarak iki Tam yedekleme gerçekleştiriyorum, böylece veri aktarımı söz konusu olduğunda günlük gerçekten gerekli olmamalıdır.

Yanıtlar:


26

Paul S. Randal'ın uygun işlem günlüğü boyutu yönetiminin önemini okumanızı tavsiye ederim .

Özet, işlem günlüğü işlemeyi gerçekleştirmenin sadece iki iyi yolunun olmasıdır :

  1. Ya normal LOG dosyası yedeklemeleri ile gidin ve LOG dosyası her LOG yedeklemesinden sonra alanını yeniden kullanır ve süresiz olarak büyümez veya

  2. SIMPLE kurtarma modelini kullanın ve düzenli tam yedekleme yaptığınız için LOG dosya boyutunuzu önemsemeniz gerekmez.

Ne ilgilendiren LOG dosyası kesme ve performansını LOG dosyası (yukarıda bağlantılı blog yayınında bir alıntı) artırılması olduğunda her zaman bir performans isabet alacak olmasıdır:

Günlüğü daraltırsanız, o zaman tekrar büyür - muhtemelen VLF parçalanmasına neden olur ve günlük anında başlatıldığında kesinlikle iş yükünüzün duraklamasına neden olur, çünkü günlük anında başlatma kullanamaz [...]

Güncelleme: DATA dosyası küçültmek için LOG dosyası kesme hatası. VERİ dosyası küçültmek gerçekten kötü. Ayrıntılar için Veri dosyalarınızı neden küçültmemeniz konusuna bakın .


Veri dosyalarınızı neden küçültmemenizin URL'si değişti. sqlskills.com/blogs/paul/…
ripvlan

Doğru işlem günlüğü boyutu yönetiminin önemi URL'sine sahiptir: sqlskills.com/blogs/paul/…
ripvlan

6

Tamam önce evet günlük bir sorun durumunda geri almak istiyorsanız günlük tam yedeklemeleri ile bile gereklidir. İşlem günlüğümüzü 15 dakikada bir yedekliyoruz. Sorun, işlem günlüğünüzü yedeklememeniz ve bu nedenle günlüğün aşırı derecede büyümesi. Doğru işlem günlüğü yedeklemeleri yapıyorsanız, neredeyse hiçbir zaman işlem günlüğünü daraltmanız gerekmez.

Günlüğü kesmeden önce veritabanını yedeklemeniz gerekir. Yedekleme ile kesme arasında yeni bir veri eklenmediğinden, çalışma saatleri dışında çalışmanızı öneririm. Daha sonra bu işlem sorununu bir daha asla yaşamayacak şekilde ayarlayın.

Performansı etkilemeye gelince, sistem donanımınızın ve kullanımınızın ayrıntılarını bilmeden söylemek zor.


4

İşlem günlüğü ne kadar hızlı büyüyor? Oldukça hızlıysa, geri büyümeye zaman harcamak zorunda olduğu için performansı hiçbir şeye yakın bir yere küçülterek etkileyeceksiniz. Bu, zaman zaman küçültmemeniz gerektiği anlamına gelmez, ancak sadece küçültmek yerine boyut konusunu düşünmeniz gerekir. Perf hit çok mu büyük? Muhtemelen hayır, ancak sunucudaki yüke bağlıdır (işlem sayısı, vb.).

Sorunlu bulduğum bir şey, "Günlük 2 Tam yedekleme gerçekleştiriyorum, bu yüzden veri aktarımı söz konusu olduğunda günlük gerçekten gerekli olmamalıdır." Günlük, tam yedeklemeler arasındaki noktalar için son derece önemlidir. Günde iki kez bile, bu salt okunur bir veritabanı olmadığı sürece bir günlük dosyası ihtiyacını ortadan kaldırmaz (eğer öyleyse, günlük dosyasında büyük bir artış görmezsiniz).


Bu boyutun bu boyuta ulaşması yaklaşık 4-6 ay sürer, bu yüzden çok hızlı değildir. Günlük dosyasının tam yedeklemeler arasında işlem gerçekleştirdiğini (yanlış) düşündüm, bu yüzden günlük içeriğinin çok büyük olamayacağı için günde 2 tam yedekleme yaptığımı söylemiştim. Dediğim gibi, günlük dosyası kavramını yanlış anlamış olabilirim.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.