Aracılığıyla paylaş


Dizin için Dolgu Faktörü Belirtme

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Bu konuda, doldurma faktörünün ne olduğu ve SQL Server Management Studio veya Transact-SQL kullanılarak SQL Server'daki bir dizinde dolgu faktörü değerinin nasıl belirtileceğini açıklanmaktadır.

Dizin veri depolaması ve performansında ince ayar yapmak için doldurma faktörü seçeneği sağlanır. Bir dizin oluşturulduğunda veya yeniden oluşturulduğunda, doldurma faktörü değeri her yaprak düzeyindeki sayfanın verilerle doldurulacak alan yüzdesini belirler ve her sayfada kalan alanı gelecekteki büyüme için boş alan olarak ayırır. Örneğin, 80 dolgu faktörü değerinin belirtilmesi, her yaprak düzeyi sayfanın yüzde 20'sinin boş bırakılacağı ve temel tabloya veri eklendikçe dizin genişletme için alan sağlanacağı anlamına gelir. Boş alan, dizin satırları arasında korunur, dizinin sonunda değil.

Doldurma faktörü değeri 1 ile 100 arasında bir yüzdedir ve sunucu genelinde varsayılan değer 0'dır; bu da yaprak düzeyi sayfaların kapasiteye doldurulduğu anlamına gelir.

Note

0 ve 100 dolgu faktörü değerleri her açıdan aynıdır.

Bu Konuda

Başlamadan Önce

PerformansLa İlgili Dikkat Edilmesi Gerekenler

Sayfa Bölmeleri

Doğru seçilen bir dolgu faktörü değeri, temel alınan tabloya veri eklendikçe dizin genişletme için yeterli alan sağlayarak olası sayfa bölmelerini azaltabilir. Tam dizin sayfasına yeni bir satır eklendiğinde, Veritabanı Altyapısı yeni satıra yer açmak için satırların yaklaşık yarısını yeni bir sayfaya taşır. Bu yeniden düzenleme, sayfa bölme olarak bilinir. Sayfa bölme işlemi yeni kayıtlara yer sağlar, ancak gerçekleştirmesi zaman alabilir ve yoğun kaynak gerektiren bir işlemdir. Ayrıca, artan G/Ç işlemlerine neden olan parçalanmalara neden olabilir. Sık sık sayfa bölmeleri gerçekleştiğinde, verileri yeniden dağıtmak için yeni veya mevcut bir doldurma faktörü değeri kullanılarak dizin yeniden oluşturulabilir. Daha fazla bilgi için bkz. Dizinleri Yeniden Düzenleme ve Yeniden Derleme.

Düşük, sıfır olmayan bir dolgu faktörü değeri, dizin büyüdükçe sayfaları bölme gereksinimini azaltabilir, ancak dizin daha fazla depolama alanı gerektirir ve okuma performansını düşürebilir. Birçok ekleme ve güncelleştirme işlemine yönelik bir uygulama için bile, veritabanı okuma sayısı genellikle 5 ile 10 arasında bir faktörle veritabanı yazma sayısını aşıyor. Bu nedenle, varsayılan değer dışında bir doldurma faktörü belirtmek, veritabanı okuma performansını doldurma faktörü ayarıyla ters orantılı bir miktar düşürebilir. Örneğin, 50'lik bir dolgu faktörü değeri, veritabanı okuma performansının iki kat düşmesine neden olabilir. Dizin daha fazla sayfa içerdiğinden okuma performansı azalır ve bu nedenle verileri almak için gereken disk GÇ işlemleri artar.

Tablonun Sonuna Veri Ekleme

0 veya 100 dışındaki sıfır olmayan bir doldurma faktörü, yeni veriler tabloya eşit olarak dağıtılırsa performans açısından iyi olabilir. Ancak, tüm veriler tablonun sonuna eklenirse, dizin sayfalarındaki boş alan doldurulmayacak. Örneğin, dizin anahtarı sütunu bir IDENTITY sütunuysa, yeni satırların anahtarı her zaman artar ve dizin satırları mantıksal olarak dizinin sonuna eklenir. Mevcut satırlar, satırların boyutunu uzatan verilerle güncelleştirilecekse, 100'den küçük bir doldurma faktörü kullanın. Her sayfadaki ek baytlar, satırlardaki fazladan uzunluk nedeniyle sayfa bölmelerini en aza indirmeye yardımcı olur.

Security

Permissions

ALTER izni, tablo veya görünüm üzerinde gereklidir. Kullanıcının sysadmin sabit sunucu rolünün veya db_ddladmin ve db_owner sabit veritabanı rollerinin üyesi olması gerekir.

SQL Server Management Studio'yu kullanma

Tablo Tasarımcısı'nı kullanarak doldurma faktörü belirtmek için

  1. Nesne Gezgini'nde artı işaretine tıklayarak dizinin dolgu faktörünü belirtmek istediğiniz tabloyu içeren veritabanını genişletin.

  2. artı işaretine tıklayarak Tablolar klasörünü genişletin.

  3. Dizinin dolgu faktörünü belirtmek istediğiniz tabloya sağ tıklayın ve Tasarım'ı seçin.

  4. Tablo Tasarımcısı menüsünde dizinler/anahtarlaröğesine tıklayın.

  5. Belirtmek istediğiniz dolgu faktörüne sahip dizini seçin.

  6. Dolgu Belirtimi'ni genişletin, Dolgu Faktörü satırını seçin ve satıra istediğiniz dolgu faktörünü girin.

  7. Kapat'a tıklayın.

  8. Dosya menüsünde, Seçintable_namekaydet.

Nesne Gezgini'yi kullanarak bir dizinde doldurma faktörü belirtmek için

  1. Nesne Gezgini'nde artı işaretine tıklayarak dizinin dolgu faktörünü belirtmek istediğiniz tabloyu içeren veritabanını genişletin.

  2. artı işaretine tıklayarak Tablolar klasörünü genişletin.

  3. Bir dizinin dolgu faktörünü belirtmek istediğiniz tabloyu genişletmek için artı işaretine tıklayın.

  4. artı işaretine tıklayarak Dizinler klasörünü genişletin.

  5. Belirtmek istediğiniz dolgu faktörüne sahip dizine sağ tıklayın ve Özellikler'i seçin.

  6. Sayfa seç'in altında Seçenekler'i seçin.

  7. Dolgu faktörü satırına istediğiniz dolgu faktörünü girin.

  8. Tamam'a tıklayın.

Transact-SQL Kullanımı

Var olan bir dizinde dolgu faktörü belirtmek için

  1. Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.

  2. Standart çubuğunda Yeni Sorgubutonuna tıklayın.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Örnek varolan bir dizini yeniden oluşturur ve yeniden oluşturma işlemi sırasında belirtilen doldurma faktörünü uygular.

    USE AdventureWorks2022;  
    GO  
    -- Rebuilds the IX_Employee_OrganizationLevel_OrganizationNode index   
    -- with a fill factor of 80 on the HumanResources.Employee table.  
    
    ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
    REBUILD WITH (FILLFACTOR = 80);   
    GO  
    

Dizinde doldurma faktörü belirtmenin başka bir yolu

  1. Nesne Gezgini'nde Veritabanı Motoru'nun bir örneğine bağlanın.

  2. Standart çubuğunda Yeni Sorgubutonuna tıklayın.

  3. Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın.

    USE AdventureWorks2022;  
    GO  
    -- Drops and re-creates the IX_Employee_OrganizationLevel_OrganizationNode index
    -- on the HumanResources.Employee table with a fill factor of 80.   
    
    CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee  
       (OrganizationLevel, OrganizationNode)   
    WITH (DROP_EXISTING = ON, FILLFACTOR = 80);   
    GO  
    

Daha fazla bilgi için bkz . ALTER INDEX (Transact-SQL).