Aracılığıyla paylaş


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

Bölümlenmiş dizinleri bağımsız olarak kendi temel tablodan uygulanabilir, ancak genellikle bölümlenmiş tablo tasarlama ve sonra da tabloyu dizin oluşturmak anlamlıdır.Bunu yaptığınızda SQL Server otomatik olarak aynı bölümleme şeması ve tablo olarak bölümleme sütun dizin bölümleri. Sonuç olarak, dizin temelde aynı şekilde bölümlenmiş tablo.Bu dizini oluşturur hizalanmış tablo.

SQL Server bir farklı bir bölümleme düzeni veya ayrı bir dosya grubu, dizin oluşturma sırasında koymak belirttiğiniz dizin tablo hizalama değil.

bölümlenmiş tablo ile bir dizin hizalama ek bölümler alarak genişletecektir ya da, sık bölüm anahtarları dahil, değişiklik yapmayı düşünüyorsanız özellikle önemlidir.Daha fazla bilgi için bkz:Verilerin alt kümelerini yönetme, bölümleri tasarlama.Bir tablo ve alt dizinleri, hizalama olduğunda SQL Server bölümleri hızlı ve verimli bir şekilde, dizinleri ve tablodan bölüm yapısını koruyarak geçebilirsiniz.

Not

Dizin ile bunun temel hizalı için aynı adlı bölümleme işlevi katılmayı yok tablo.2) 3) Ancak, dizin ve temel tablo, bölüm işlev temelde aynı bölüm işlevlerin 1 bir bağımsız değişken aynı veri türüne sahip bölüm aynı sayıda tanımlarlar ve, bölüm için aynı sınır değerleri tanımlamak için olmalıdır.

The Tuning Options tab of the veritabanı altyapısı Tuning Advisor provides an Aligned bölümleme setting to specify that new recommended indexes be aligned with their base tables.The Keep aligned bölümleme 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ı (Seçenekleri sekmesi ayarlama).Genellikle, Veritabanı Altyapısı Ayarlama Danışmanı başarım için dizinler önermek için kullanılabilir ve bu hizalanmış ve nonaligned dizinlerinin bir karışımı olabilir.Daha fazla bilgi için bkz:veritabanı altyapısı Ayarlama Danışmanı'na genel bakış.

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

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

  • Dizin anahtar benzersizdir ve bölümleme sütun tablo içermiyor.

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

Not

Bölüm değiştirmeyi etkinleştirmek için , tablodaki tüm dizinleri hizalı gerekir.

bölümlenmiş dizin oluşturduğunuzda aşağıdaki bölümlerde bilgileri dikkate alın.

bölümleme benzersiz dizinler

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

Not

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

Benzersiz anahtar olarak dahil edilecek bölümleme sütun mümkün değilse, DML tetikleyicisi yerine benzersizlik için kullanmanız gerekir.

Kümelenmiş dizinler bölümleme

Kümelendirme, kümelenmiş dizin böldüğünüzde anahtar bölümleme sütun içermeli.Ne zaman benzer bir bölümleme, dizinin kümelenmiş ve Küme hizmeti bölümleme sütun açıkça belirtilmemiş anahtar, SQL Server Varsayılan olarak, bölümleme sütun kümelenmiş dizin anahtar s listesine ekler. Kümelenmiş dizin benzersiz olması durumunda, kümelenmiş dizin anahtar içeren bölümleme sütun açıkça belirtmeniz gerekir.

Kümelenmemiş dizin bölümleme

Kümelenmemiş bir benzersiz dizin böldüğünüzde, dizin anahtarının bölümleme sütun içermesi gerekir.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ümlendirilmiş dizinler

Bellek sınırlamaları, performans veya yeteneğini etkileyebilir. SQL Server bölümlenmiş dizin oluşturmak için . Dizin ile hizalı, bu durum özellikle geçerlidir, temel tablo veya tablonun uygulanmış kümelenmiş dizin varsa, kümelenmiş dizin ile hizalı değil.

Ne zaman SQL Server bölümlendirilmiş bir dizin oluşturmak için sıralama gerçekleştirir, önce bir sıralama oluşturur tablo her bölüm için. Bunu daha sonra sıralama tabloları ya da ilgili dosya grubu her bölümün veya içinde oluşturur tempdb, the SORT_IN_TEMPDB seçeneği dizine eklerseniz belirtildi.

Her sıralama tablo en az düzeyde oluşturmak için bellek gerektirir.Ne saat bölümlenmiş dizin, oluşturmakta olduğunuz ile bunun temel hizalanır tablo, sıralama tablo s yerleşik bir defada daha az bellek kullanma.Bir nonaligned bölümlenmiş dizin oluştururken, ancak sıralama tabloları aynı anda yerleşik saat.

Sonuç olarak, bu eşzamanlı 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 için en küçük boyut tablo, her bölüm için 40 sayfaları, sayfa başına 8 kilobayt olur.Örneğin, 100 bölümlerle nonaligned bölümlenmiş dizin, seri olarak (40 * 100) 4.000 sıralamak için yeterli bellek gerektirir sayfaları aynı anda saat.Bu bellek varsa, oluşturma işlemi başarılı olur, ancak performansı da düşebilir.Bu bellek yoksa, oluşturma işlemi başarısız olur.Sıralar aynı anda gerçekleştirileceğini değil alternatif olarak, 100 bölümlerle hizalanmış bölümlendirilmiş dizin 40 sayfalarını sıralamak için yalnızca yeterli bellek gerektirir, çünkü saat.

Hizalanmış ve nonaligned dizinler için bellek gereksinimi büyük olabilir, SQL Server çok işlemcili bir bilgisayarda Yapı işlem parallelism derecesi uygulanıyor. Bu, çünkü parallelism derece çoksa, büyük bellek gereksinimi.Örneğin, SQL Server 4 parallelism, 100 bölümlerle nonaligned bölümlenmiş dizin kümesi derece 4.000 sayfaları aynı anda veya 16.000 sayfalarını sıralamak dört işlemci için yeterli bellek gerektirir. Bölümlenmiş dizin hizalanmışsa, 40 sayfaları ya da (4 * 40) 160 sıralama dört işlemci için bellek gereksinimi azaltılır sayfaları.El ile derece parallelism, azaltmak için dizin MAXDOP seçeneğini kullanabilirsiniz.Daha fazla bilgi için bkz:Parallel ındex işlemi yapılandırma.

Hakkında daha fazla bilgi için SQL Server gerçekleştirir dizinleri oluştururken operasyonlar sıralama, bkz: tempdb ve dizin oluşturma.