SQLServer veritabanımı birleştirmenin zamanı geldiğini nasıl anlayabilirim?


9

SQLServer veritabanı parçalanması / performans sunumunu ölçmek ve bir SQLServer veritabanı tablosunu ne zaman birleştireceğinizi belirlemek için en iyi yöntem nedir?

En yararlı metriklerin ne olduğunu ve performans düşüşünün hangi düzeyde birleştirme işlemini tetiklemesi gerektiğini öğrenmek istiyorum.

Yanıtlar:


22

Hangi metriklere bakacağımız konusunda birçok anlaşmazlık olduğundan, bunun bazı ilginç cevapları olacağından eminim. DBCC INDEXDEFRAG, SHOWCONTIG'i yazdım ve değiştirmelerini 2005 için tasarladım, ayrıca Books Online içeriğini yazdım, bu yüzden size görüşümü vereceğim ve seçtiğim Books Online'daki sayıları ve 2005 için bakım planı sihirbazını açıklayacağım.

Dizin parçalanması için bakılacak en iyi iki ölçüm şunlardır: 1) (2005) yüzde / ortalama ortalama mantıksal tarama parçalanması 2) (2005) ortalama sayfa yoğunluğu / (2000) ortalama bayt / sayfa

Bunlar kümelenmiş ve kümelenmemiş dizinler için de aynı şekilde geçerlidir.

1 ne kadar mantıksal parçalanma olduğunu ölçüyor. Bu, bir dizinin yaprak düzeyindeki sayfaların mantıksal sırasının fiziksel sıra ile eşleşmediği zamandır. Bu, Depolama Motorunun menzil taramaları sırasında etkili okuma kafası yapmasını önler. Yani # 1, tekton arama performansını değil, aralık tarama performansını etkiler.

Şekil 2, bir endeksin yaprak seviyesinde her sayfada ne kadar boşa alan olduğunu ölçmektedir. Boşa giden alan, kayıtları depolamak için daha fazla sayfa kullandığınız anlamına gelir; bu da dizini depolamak için daha fazla disk alanı, dizini okumak için daha fazla GÇ ve arabellek havuzundaki sayfaları bellekte tutmak için daha fazla bellek anlamına gelir.

Eşik? Genel kuralım% 10'dan daha az parçalanma, hiçbir şey yapma. % 10-30, bir ALTER INDEX ... REORGANIZE (2005) / DBCC INDEXDEFRAG (2000) yapın. % 30'dan fazla bir ALTER INDEX ... REBUILD (2005) / DBCC DBREINDEX (2000) yapın. Bunlar tam genellemelerdir ve sizin için eşikler değişecektir.

Eşiklerinizi bulmak için, iş yükü performansını parçalanma düzeylerine göre biraz izleyin ve performans düşüşünün ne zaman çok fazla olduğuna karar verin. Bu noktada parçalanma konusunu ele almanız gerekir. Parçalanma ile yaşamak ve onu çıkarmaktan kaynak çekmek arasında bir dengeleme eylemi var.

Burada, parçalanmayı gidermek için iki yöntem, parçalanmayı hafifletmek ve daha az birleştirme yapmak için FILLFACTOR / PADINDEX gibi şeyler, parçalanmayı hafifletmek için şema / erişim modellerinde değişiklikler veya farklı bakım planları arasındaki değişimlere değinmedim. .

Oh, btw, her zaman 1000 sayfanın altındaki dizinlerde parçalanma konusunda rahatsız etmemenizi tavsiye ederim. Bunun nedeni, dizin büyük olasılıkla bellekte yerleşik olmasıdır (ve insanlar bir numara istedi ve ben bir tane bulmak zorundayım).

Bu konuda daha fazla bilgiyi http://technet.microsoft.com/en-us/magazine/cc671165.aspx adresindeki veritabanı bakımı hakkındaki TechNet Magazine makalemde , dizin yardımcısı en iyi uygulamalarıyla ilgili 2000 tabanlı teknik incelemede yazmamda yardımcı olabilirim http://technet.microsoft.com/en-us/library/cc966523.aspx ve blogumda http://www.sqlskills.com/BLOGS/PAUL/category/Fragmentation.aspx adresindeki Parçalama kategorisi altında .

Sanırım buna aşırı cevap verdim, ama bu benim kısayol düğmelerimden biri. Bu yardımcı olur umarım :-)

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.