Bir dizin için dolgu etmeni belirleme

Bu konuda ne dolgu etmeni ve Dolgu faktörü değeri üzerinde bir dizin belirtmek nasıl açıklar SQL Server 2012kullanarak SQL Server Management Studioya Transact-SQL.

Dizin veri depolama ve performans ince ayar yapmak için dolgu etmeni seçeneği sağlanır. Dizin oluşturulduğunda veya yeniden dolgu etmeni değerini alan gelecekteki büyüme için boş alan olarak kalan her sayfa ayırması verilerle doldurulması için her yaprak düzey sayfanın yüzdesini belirler. Örneğin, dolgu etmeni değeri her yaprak düzey sayfayı yüzde 20 temel tabloyu veri eklendikçe alanı için dizin genişleme sağlayan boş kalmayacak 80 anlamına gelir belirtme. Boş dizin sonunda yerine dizin satırları arasında ayrılmıştır.

1'den yüzde 100 dolgu etmeni değerdir ve sunucu bazındaki varsayılan 0 yaprak düzey sayfalar kapasite dolu vardır anlamına gelir.

[!NOT]

Dolgu etmeni 0 ve 100 tüm respects aynı değerlerdir.

Bu Konuda

  • Başlamadan Önce

    Performans Değerlendirmeleri

    Güvenlik

  • Dizin içinde dolgu etmeni belirlemek için kullanma:

    SQL Server Management Studio

    Transact-SQL

Başlamadan Önce

Performans Değerlendirmeleri

Sayfa bölünmesi

Doğru seçilmiş dolgu etmeni değerini temel tabloyu veri eklendikçe dizin genişleme için yeterli alanı sağlayarak olası sayfa bölünmesi azaltabilirsiniz.Tam dizin sayfa için yeni bir satır eklendiğinde Veritabanı Altyapısıyeni bir satır açmak için yeni bir sayfa yaklaşık yarım satırları taşır. Bu yeniden yapılanma bir sayfa bölünmüş bilinir. Bir sayfa bölünmüş yeni kayıtlar için yer yapar ama gerçekleştirmek için zaman alabilir ve bir kaynak yoğun bir işlemdir. Ayrıca, yüksek g/Ç işlemlerinin neden parçalanma neden olabilir. Sık sık sayfa bölünmesi gerçekleştiğinde, dizin verileri yeniden bir yeni ya da varolan dolgu etmeni değerini kullanarak oluşturulması. Daha fazla bilgi için, bkz. Yeniden düzenleme ve dizinler yeniden oluşturma.

Bir düşük olsa da, sıfır olmayan dolgu etmeni değerini sayfaları gibi dizin büyür, dizin daha fazla depolama alanı gerektirir ve performans azalma okuyabilirsiniz bölmek için ihtiyacı azaltabilir. Fazla yönelik birçok Ekle ve güncelleştir işlemleri için bile bir uygulamanın, veritabanı okuma sayısı genellikle veritabanı yazıyor 5-10 faktör tarafından gelmek. Bu nedenle, başka bir dolgu etmeni belirleme varsayılan veritabanı okuma performansı bir miktar için dolgu etmeni ayarını ters orantılı olarak düşürebilir. Örneğin, 50 dolgu etmeni değeri veritabanı okuma performansına tarafından iki kez düşmesine neden olabilir. Bu nedenle veri almak için gerekli disk g/Ç işlemlerini artırarak daha fazla sayfa dizini içerdiğinden okuma performansı düşer.

Tablonun sonuna veri ekleme

Yeni veriler tablo eşit olarak dağıtılmıştır sıfır olmayan dolgu etmeni 0 ya da 100 farklı performans için iyi olabilir. Ancak, tüm veriler eklenir, tablonun sonuna boş dizin sayfaları içinde dolu değil. Örneğin, dizin anahtar sütunu kimlik sütunu varsa, yeni satırlar için anahtar her zaman artmaktadır ve dizin satırları mantıksal dizin sonuna eklenir. Varolan satır satır boyutunu kalırken verilerle güncelleştirilir, dolgu etmeni 100'den az kullanın. Ekstra byte her sayfada sayfa bölünmesi satırlarda ekstra uzunluğu nedeniyle en aza indirmek için yardımcı olacaktır.

Güvenlik

İzinler

Tablo veya görünümde ALTER izni gerektirir. Kullanıcı-meli var olmak a üye sysadmin sabit sunucu rolü veya db_ddladmin ve db_owner veritabanı rolleri sabit.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

SQL Server Management Studio Kullanarak

Tablo Tasarımcısı kullanarak dolgu etmeni belirlemek için

  1. Nesne Explorer'da dizin 's dolgu etmeni belirlemek istediğiniz tabloyu içeren veritabanı genişletmek için artı işaretini tıklatın.

  2. Genişletmek için artı işaretini tablo ağıl.

  3. Dizin 's dolgu etmeni belirlemek ve seçmek istediğiniz tabloyu sağ Tasarım.

  4. Tarih Tablo Tasarımcısı menüsünü tıklayın Dizinler/Anahtarlar.

  5. İle dolgu etmeni belirlemek istediğiniz dizini seçin.

  6. Genişletme Dolgu belirtimiseçin Dolgu etmeni satır ve dolgu etmeni istediğiniz satıra girin.

  7. Tıklayın yakın.

  8. Tarih dosyasını Seç menüsünden kaydetmektable_name.

Nesne Gezgini'ni kullanarak bir dizin dolgu etmeni belirlemek için

  1. Nesne Explorer'da dizin 's dolgu etmeni belirlemek istediğiniz tabloyu içeren veritabanı genişletmek için artı işaretini tıklatın.

  2. Genişletmek için artı işaretini tablo ağıl.

  3. Dizin 's dolgu etmeni belirlemek istediğiniz tabloyu genişletmek için artı işaretini tıklatın.

  4. Genişletmek için artı işaretini Dizinler ağıl.

  5. Dolgu etmeni belirlemek ve seçmek istediğiniz dizin sağ Özellikler.

  6. Altında sayfaseçin seçenekleri.

  7. İçinde dolgu etmeni satır, istediğiniz Dolgu faktörü girin.

  8. Click OK.

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]

Transact-SQL'i Kullanma

Varolan bir dizini dolgu etmeni belirlemek için

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute. Örnek, varolan bir dizini yeniden oluşturur ve yeniden oluşturma işlemi sırasında belirtilen dolgu etmeni uygular.

    USE AdventureWorks2012;
    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
    

Bir dizin dolgu etmeni belirlemek için başka bir yol

  1. İçinde Object Explorer, örneğine bağlanmak Veritabanı Altyapısı.

  2. Standart çubuğunda Yeni sorgu.

  3. Kopyalama ve aşağıdaki örnek sorgu penceresine yapıştırın ve tıkırtı Execute.

    USE AdventureWorks2012;
    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).

Başa Dön bağlantısıyla kullanılan ok simgesi[Top]