SQL Server Performans Optimizasyonu
- SQL Server Performans Optimizasyonu (SQL Server)
- 16373
|
Dizin Parçalanmasına Genel Bakış
Dizin parçalanması nedir ve bu konuda neden endişelenmeliyim? Bir dizin, dizindeki mantıksal sıralamanın (dizindeki anahtar değerlere dayalı olarak) dizinlenen sayfalardaki fiziksel sıralamayla eşleşmediği sayfalar içerdiğinde parçalanma meydana gelir. Veritabanı motoru, temel veriler üzerinde bir ekleme, güncelleme veya silme işlemi gerçekleştirildiğinde dizini otomatik olarak değiştirir. Örneğin, bir tabloya satır eklemek, yeni anahtar değerlerin eklenmesine yer açmak için satır deposu dizinindeki mevcut sayfaların bölünmesine neden olabilir. Zamanla, bu değişiklikler dizindeki bilgilerin veritabanı genelinde dağılmasına (parçalanmasına) neden olabilir. Parçalanma, bir dizinde bulunan sayfalardaki mantıksal sıralama (anahtar değerlere dayalı olarak) veri dosyasındaki fiziksel sıralamayla eşleşmediğinde ortaya çıkar. Çok sayıda parçalanmış dizin sorgu performansını düşürebilir çünkü dizinin işaret ettiği verileri aramak için ek G/Ç gerekir. Daha fazla G/Ç, özellikle tarama işlemleri söz konusu olduğunda uygulama yanıtının yavaşlamasına neden olabilir. Veritabanı dizin parçalanmasını kontrol etmek için
Komuta:
Birleştirme iki şekilde yapılabilir: dizinlerin yeniden düzenlenmesi ve dizinlerin yeniden oluşturulması. Dizinlerin yeniden oluşturulması, eski dizinlerin silinmesi ve yeni dizinlerin tek bir işlemde yeniden oluşturulması anlamına gelir; bu işlem orijinal dizinlerin sabit disk alanını geri alır ve dizin yapısını oluşturmak için yeni depolama alanı tahsis eder. Bir dizinin yeniden düzenlenmesi, yeni depolama alanı tahsis edilmemesi ve veri sayfalarının mantıksal sırasının fiziksel sırayla tutarlı olması için dizin yapısının yaprak düğümlerinin orijinal alan temelinde yeniden düzenlenmesi ve dizindeki fazla alanın boşaltılması anlamına gelir; bu da dizinin yeniden düzenlenmesinin yaprak düğümlerinin harici parçalanmasını azaltmak olduğu anlamına gelir.
Parçalanma derecesini tespit etmek için sys.dm_db_index_physical_stats işlevini kullanın, avg_fragmentation_in_percent alanı mantıksal parçalanma yüzdesi tarafından döndürülür, genel olarak Microsoft eşik olarak %30'u önerir:
avg_fragmentation_in_percent >%5 ve <=%30: dizini yeniden düzenleyin (ALTER INDEX REORGANIZE); avg_fragmentation_in_percent >%30: dizini yeniden oluştur (ALTER INDEX REBUILD);
avg_fragmentation_in_percent: dizin parçalanma yüzdesi, parçalanma %10 ila %20'den azsa, parçalanmanın bir sorun haline gelmesi olası değildir, dizin parçalanması %20 ila %40 ise, parçalanma bir sorun haline gelebilir, ancak dizini ortadan kaldırmak için dizin yeniden düzenlemesi ile çözülebilir, büyük parçalanma ( parçalanma % 40'tan büyük olduğunda), dizinin yeniden oluşturulması gerekebilir .
Belirtilen bir tablonun tüm dizinlerinin parçalanma bilgilerini sorgulamak için
Tablo yeniden oluşturma dizini
Veritabanındaki tüm tablolar için dizinleri yeniden oluşturun
Referans: https: //docs.microsoft.com/zh-cn/sql/relational-databases/indexes/reorganize-and-rebuild-indexes?view=sql-server-ver15 |
Önceki: URL yanlışlıkla "/itsvse" ile bittiği için istek biçimi tanınamıyor.Sonraki:ORM çerçevesi Dapper kullanımı basit
|