Bölümlenmiş dizinler için özel yönergeleri

Bölümlenmiş dizinler bağımsız olarak kendi temel tablodan uygulanabilir olsa da, genellikle bölümlenmiş tablo tasarlama ve sonra tablo üzerinde bir dizin oluşturmak için anlamlıdır.Bunu yaparken SQL Server otomatik olarak aynı kullanarak dizin bölümlerini bölümleme düzeni ve bölümleme sütunu olarak tablo.Sonuç olarak, temelde aynı şekilde tablo olarak dizin bölümlendirilir.Bu dizin yapar hizalı tablo.

SQL Serverfarklı bir bölümleme düzeni veya üzerinde dizin oluşturma sırasında koymak ayrı bir dosya grubu belirtirseniz, dizin tablosu ile hizalamak saat.

bölümlenmiş tablo ile bir dizin hizalama üzerinde ek bölümler alarak genişleyecektir veya onu sık sık bölüm anahtarları dahil öngörüyorsanız özellikle önemlidir.Daha fazla bilgi için bkz: Bölümler veri alt kümeleri Yönet tasarlama.Bir tablo ve dizinleri, hizalama olduğunda SQL Server anahtar bölümler hızlı ve verimli bir şekilde çalışırken hem tablo ve bölüm yapısını koruyarakkendi dizinleri.

Not

Dizin aynı adlı katılmak zorunda bölümleme işlev , temel tablo ile hizalamak.Ancak, bölümleme işlev dizini ve temel tablo aslında aynı konusu olmalıdır 1) bağımsız değişkenleri bölümleme işlevs aynı veri türüne sahip 2) bölümleri aynı sayıda tanımlarlar ve 3) bölümler için aynı sınır değerleri tanımlarlar.

The Tuning Options tab of the Database Engine Tuning Advisor provides an Aligned partitioning setting to specify that new recommended indexes be aligned with their base tables.The Keep aligned partitioning setting can be used for the same purpose and can also be used to drop existing nonaligned indexes.Daha fazla bilgi için bkz: Veritabanı Altyapısı Ayarlama Danışmanı (ayarlama Seçenekler sekmesinde).Genellikle, Veritabanı Altyapısı Ayarlama Danışmanı performansı için dizinleri tavsiye için kullanılabilir ve bu dizinleri hizalanmış ve genel bir karışımı olabilir.Daha fazla bilgi için bkz: Veritabanı Altyapısı Ayarlama Danışmanı genel bakış.

Bağımsız olarak bölümlenmiş dizin tasarlama (hizalanmamış) temel tablo aşağıdaki durumlarda yararlı olabilir:

  • Temel tablo bölümlenmiş değil.

  • Dizin anahtar benzersizdir ve içeriyor mu bölümleme sütunu tablo.

  • Temel tablo farklı birleştirmek sütunları kullanarak daha fazla tabloları ile collocated birleşimlerde katılmak istediğiniz.

Not

Bölüm geçiş, tüm dizinler etkinleştirmek için tablo hizalanması gerekir.

bölümlenmiş dizin oluşturduğunuzda, aşağıdaki bölümlerde yer alan bilgiler göz önünde bulundurun.

Benzersiz dizinler bölümleme

Benzersiz bir dizin böldüğünüzde (kümelenmiş veya kümelenmemiş) bölümleme sütunu benzersiz dizin anahtar olarak kullanılan kodlar arasından seçilmelidir.

Not

Bu kısıtlama sağlayan SQL Server emin olun için yalnızca tek bir bölüm araştırmak için yeni bir anahtar değeri zaten hiçbir kopyası bulunmaktadır tablo.

Mümkün değilse, bölümleme sütunu benzersiz anahtarını dahil edilecek, DML tetikleyicisi yerine benzersizlik için kullanmanız gerekir.

Kümelenmiş dizinler bölümleme

Kümeleme, kümelenmiş dizin böldüğünüzde anahtar bölümleme sütunu içermelidir.Ne zaman benzersiz olmayan bir bölümleme kümelenmiş dizin ve bölümleme sütunu kümeleme anahtarını açıkça belirtilmemiş SQL Server bölümleme ekler sütun varsayılan değer listesine kümelenmiş dizin anahtar.Kümelenmiş dizin benzersiz ise, açıkça kümelenmiş dizin anahtar içeren olduğunu belirtmeniz gerekir bölümleme sütunu.

Kümelenmemiş dizinler bölümleme

Benzersiz kümelenmemiş dizin, dizin böldüğünüzde anahtar bölümleme sütunu içermelidir.When partitioning a nonunique, nonclustered index, SQL Server adds the partitioning column by default as a nonkey (included) column of the index to make sure the index is aligned with the base table.SQL Server does not add the partitioning column to the index if it is already present in the index.

Bellek kısıtlamaları ve bölümlenmiş dizinler

Bellek kısıtlamaları performansı veya yeteneğini etkileyebilir SQL Server için yapı bölümlenmiş dizin.Bu özellikle, durum ne zaman dizini, temel tablo ile hizalı veya tablonun uygulanan kümelenmiş bir dizin varsa, kümelenmiş dizin ile hizalı değil.

Zaman SQL Server bölümlenmiş dizinler oluşturmak için sıralama gerçekleştirir öncelikle bir sıralama tablosu oluşturur tablo için her bölüm.Onu sonra sıralama tabloları ya da her bölüm veya buna karşılık gelen dosya grubu oluşturur tempdb, SORT_IN_TEMPDB dizin seçeneği belirtilirse.

Her sıralama tablo en az düzeyde oluşturmak için bellek gerektirir.Onun temel tablo ile hizalı bölümlenmiş dizin oluştururken, sıralama tabloları tek tek yerleşik olarak bulunan bir saat, daha az bellek kullanma.Genel bölümlenmiş dizin oluştururken, ancak sıralama tabloları aynı anda oluşturulan saat.

Sonuç olarak, aynı anda bu sıralar işlemek için yeterli bellek olmalıdır.Büyük bölüm sayısı, daha fazla bellek gerekli.Her sıralama en az boyutunu tablo, her bir bölüm için 40 sayfalar, sayfa başına 8 kilobayt olur.Örneğin, genel bir bölümlenmiş dizin 100 bölümleri ile seri olarak 4.000 (40 * 100) sıralamak için yeterli bellek gerektirir aynı sayfaları saat.Bu bellek yok, oluşturma işlemi başarılı olur, ancak performans bozulabilir.Bu bellek yoksa, oluşturma işlemi başarısız olur.Sıralar aynı anda gerçekleştirilen değil alternatif olarak, 100 bölümleri hizalı bölümlenmiş dizin 40 sayfaları sıralamak için yalnızca yeterli bellek gerektirir, çünkü saat.

Hizalanmış ve genel dizinler için bellek gereksinimi büyük olabilir, SQL Server uygulama derece derecesi için yapı operasyonda çok işlemcili bir bilgisayar.Bu, çünkü parallelism derecesi arttıkça, bellek gereksinimi artar.Örneğin, SQL Server parallelism 4, 100 bölümleri genel bölümlenmiş bir dizin kümesi derece gerektirir aynı 4.000 sayfaları sıralamak dört işlemci için yeterli bellek saat, ya da 16.000 sayfaları.bölümlenmiş dizin hizalanmışsa, 40 sayfa ya da 160 (4 * 40) sıralama dört işlemci için bellek gereksinimi azalır sayfaları.maxdop indeks seçeneği, el ile parallelism derece azaltmak için kullanabilirsiniz.Daha fazla bilgi için bkz: Paralel dizin işlemleri yapılandırma.

Hakkında daha fazla bilgi için SQL Server gerçekleştirdiği Bkz: dizinler oluştururken sıralama işlemleri, tempdb ve dizin oluşturma.