Bölümlenmiş tablolar ve dizinler

SQL ServerTablo ve dizin bölümleme destekler. Veri bölümlenmiş tablolar ve dizinler üzerinde birden fazla filegroup bir veritabanına yayılmış birimleri ayrılmıştır. Böylece satır gruplarını ayrı bölümler halinde eşlenen verileri yatay olarak bölümlendirilir. Tüm bölümler tek bir dizin veya tablo aynı veritabanında bulunması gerekir. Sorguları veya güncelleştirmeleri veriler üzerinde gerçekleştirilen zaman tablo veya dizin, tek bir mantıksal varlık olarak kabul edilir. Bölümlenmiş tablolar ve dizinler her sürümünde kullanılabilir değildir Microsoft SQL Server. Sürümü tarafından desteklenen özellikleri listesi için SQL Serverbakın SQL Server 2012 Sürümleri Tarafından Desteklenen Özellikler.

Önemli notÖnemli

SQL Server 2012Varsayılan olarak en fazla 15,000 bölümlerini destekler. Önceki sürümlerde, bölüm sayısı 1.000 varsayılan olarak sınırlı. X 86 tabanlı sistemlerde, bir tablo veya dizin ile 1000'den fazla bölüm oluşturmak mümkündür, ancak desteklenmiyor.

Bölümleme yararları

Büyük tablolar veya dizinler bölümleme aşağıdaki yönetilebilirlik ve performans avantajları olabilir.

  • Aktarım veya veri derlemesi bütünlüğünü koruyarak hızlı ve verimli bir şekilde veri alt kümelerine erişmek. Örneğin, veri--dan bir oltp bir olap sistemi yükleme gibi bir işlem, verileri olmayan bölümlenmiş işleme alır dakika ve saat yerine yalnızca saniye sürer.

  • Bir veya daha fazla bölümleri üzerinde bakım işlemlerini daha hızlı bir şekilde gerçekleştirebilirsiniz. Çünkü onlar sadece şu alt veri kümeleri, Bütün tablo yerine hedef operasyonların daha verimli. Örneğin, bir veya daha fazla bölüm verileri sıkıştırmak veya bir veya daha fazla dizin bölümlerini yeniden seçebilirsiniz.

  • Sıkça çalıştırdığınız sorgular türlerine ve donanım yapılandırmanızı temel sorgu performansı artırabilir. Ne zaman tabloları bölümleme sütunları aynı bölümleri kendilerini katılmış olması nedeniyle, query optimizer Eş birleşim sorguları iki ya da daha fazla bölümlenmiş tablolar arasında daha hızlı işleyebilir.

    Ne zaman SQL Servergerçekleştirdiği g/Ç işlemleri için sıralama verileri, bu veri ilk bölümü sıralar. SQL Serverbir kere görüntülendi götürmek vasıl a zaman ve bu performansı düşürebilir. Veri sıralama performansı artırmak için RAID kadar ayarlayarak arasında birden fazla disk bölümlerinizi veri dosyalarını şerit. Bu şekilde, her ne kadar SQL Serverhala verileri sıralar bölümü, aynı zamanda her bölümünün tüm sürücülere erişebilirsiniz.

    Ayrıca, tüm tablo yerine bölüm düzeyinde kilit etkinleşmesini sağlayarak performansı artırabilir. Bu tablo üzerinde kilit çakışması küçültebilirsiniz.

Bileşenleri ve kavramlar

Tablo ve dizin bölümleme için aşağıdaki koşullara tabidir.

  • Bölüm işlevi
    Bir veritabanı nesnesini tanımlayan bir dizi bölümleri belirli sütun değerlerine dayalı bir tablo veya dizin satırları nasıl eşleştirildikleri bölümleme sütun adı. Yani, Bölüm işlevi tablo olacak bölümler ve bölümlerin sınırları nasıl tanımlandığını sayısını tanımlar. Örneğin, satış sipariş verilerini içeren bir tabloya göz önüne alındığında, Oniki (aylık) bölümlere göre Tablo bölümlemek istediğiniz bir datetimesütun satış tarihi gibi.

  • Bölüm düzeni
    Filegroups kümesine bölüm işlevi bölümleri eşleyen bir veritabanı nesnesidir. Bölümleri üzerinde ayrı filegroups yerleştirme temel nedeni, bağımsız yedekleme işlemleri bölümlerinde gerçekleştirebileceğiniz sağlamaktır. Bunun nedeni, ayrı filegroups üzerinde yedeklemeler gerçekleştirebilirsiniz.

  • Bölümleme sütununda
    Sütun tablo veya tablo veya dizin bölümü için bölüm işlevini kullanan dizin. Bölüm işlevi katılmak hesaplanmış sütunları açıkça PERSISTED işaretlenmelidir. İçin geçerli olan tüm veri türlerini kullanmak gibi dizin sütunları hariç bölümleme sütun olarak, kullanılabilir timestamp. The ntext, text, image, xml, varchar(max), nvarchar(max), or varbinary(max) data types cannot be specified. Ayrıca, Microsoft .NET Framework ortak dil çalışma zamanı (clr) kullanıcı tanımlı türü ve diğer ad veri türü sütunları belirtilemez.

  • Hizalı dizin
    Onun karşılık gelen tablo aynı bölüm düzenini inşa edilmiştir bir dizin. Tablo ve dizinleri uyum içinde olduğunda, SQL Server bölümleri hızla ve verimli bir şekilde tablo ve dizinleri bölüm yapısını koruyarak geçiş yapabilirsiniz. Onun temel tablo ile hizalanmasını aynı adlı Bölüm işlevi katılmak dizin yok. Ancak, temel tablo ve dizin bölüm işlevi temelde aynı 1) bölüm işlevlerin bağımsız değişkenleri 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 olmalıdır.

  • Nonaligned Index
    Bağımsız olarak, ilgili tablodan bölümlenmiş bir dizin. Yani, dizin farklı bölüm düzenini var veya temel tablo farklı bir filegroup yerleştirilir. Nonaligned bölümlenmiş bir dizin tasarlama 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ı birleştirme sütunları kullanarak daha fazla tabloları ile collocated birleşimlerde katılmak istiyorum.

  • Bölüm eleme
    İşlem tarafından yalnızca sorgunun filtre ölçütlerini karşılamak için ilgili bölümleri query optimizer erişir.

Performans yönergeleri

Yeni, yüksek sınırı 15.000 bölümleri, bellek, bölümlenmiş indeks işlemleri, dbcc komutlarını ve sorguları etkiler. Bu bölümde, 1.000 yukarıda bölüm sayısını artırarak performansı üzerindeki etkileri açıklanır ve gerektiğinde geçici çözümler sağlanır. Bölümler için 15,000 arttı sayısı sınırı ile daha uzun bir süre için veri depolayabilir. Ancak, gerekli sürece, yalnızca ilgili verileri korumak ve performans ve bölüm sayısı arasında bir denge sağlamak gerekir.

Bellek kullanımı ve kuralları

Çok sayıda bölümleri kullanılıyorsa, en az 16 gb RAM kullanmanızı öneririz. Eğer sistemde yeterli bellek, Data Manipulation Language (dml) ifadeleri, veri tanımlama dili (ddl) deyimleri yok ve diğer işlemleri yetersiz bellek nedeniyle başarısız olabilir. Çok yoğun bellek kullanan işlemler sistemlerde ile 16 gb RAM bellek bölümleri üzerinde çok sayıda çalışan işlemleri üzerinde çalışabilir. Bu nedenle, daha fazla bellek üzerinde 16 gb var, daha az performans ve bellek sorunları karşılaşmaya vardır.

Bellek kısıtlamaları, performansı veya bölümlenmiş bir dizin oluşturmak için SQL Server yeteneğini etkileyebilir. Dizin, temel tablo ile uyumlu değil veya kümelenmiş indisi ile hizalı değil tablo zaten uygulanmış kümelenmiş bir dizin varsa, özellikle budur.

Bölümlenmiş indeks işlemleri

Bellek kısıtlamaları, performansı veya bölümlenmiş bir dizin oluşturmak için SQL Server yeteneğini etkileyebilir. Özellikle nonaligned dizinler ile böyledir. 1.000 adetten fazla bölümü olan bir tabloda hizalanmamış dizinler oluşturmak veya bunları yeniden oluşturmak olanaklıdır, ancak desteklenmez. Bunun yapılması, bu işlemler sırasında performansın düşmesine ve aşırı bellek tüketilmesine neden olabilir.

Oluşturma ve hizalanmış dizinler yeniden oluşturuluyor sayısı arttıkça bölümleri yürütmek daha uzun sürebilir. Birden fazla çalıştırmayın öneririz oluşturmak ve performans ve bellek sorunları çalışabilir gibi aynı zamanda dizin komutları yeniden.

SQL Server Bölümlenmiş dizinler oluşturmak için sıralama yaparken, öncelikle bir sıralama tablosu her bölüm için oluşturur. Sonra her bölümün ya da ilgili filegroup ya da sıralama tabloları oluşturur tempdb, SORT_IN_TEMPDB dizin seçeneği belirtilirse. Her sıralama tablosu oluşturmak için bellek en az miktarda gerektirir. Onun temel tablo ile hizalanır bölümlenmiş bir dizin oluştururken, sıralama tabloları tek tek, daha az bellek kullanarak inşa edilir. Ancak, sıralama tabloları nonaligned bölümlenmiş bir dizin oluştururken, aynı zamanda inşa edilir. Sonuç olarak, eşzamanlı şu 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 tablosunda, her bölüm için en az 40 sayfa, sayfa başına 8 kilobayt boyutudur. Örneğin, 100 bölümleri nonaligned bölümlenmiş bir dizin seri olarak 4.000 (40 * 100) sıralamak için yeterli bellek gerektiren sayfalar aynı zamanda. Bu bellek varsa, oluşturma işlemi başarılı olur, ancak performansı etkilenebilir. Bu bellek yoksa, oluşturma işlemi başarısız olur. Alternatif olarak, 100 bölümleri hizalı bölümlenmiş bir dizin 40 sayfaları sıralamak için yalnızca yeterli bellek gerektirir, çünkü sıralar aynı anda gerçekleştirilmez.

Hizalanmış ve nonaligned dizinler için bellek gereksinimi büyük eğer inşa işlemi çok işlemcili bir bilgisayarda SQL Server parallelism derece uygulanıyor olabilir. Bunun sebebi parallelism derece arttıkça, daha fazla bellek gereksinimi. Örneğin, SQL Server 4 parallelism derece belirlerse, 100 bölümleri nonaligned bölümlenmiş bir dizin dört işlemci aynı anda 4.000 sayfaları veya 16,000 sayfaları sıralamak için yeterli bellek gerektirir. Bölümlenmiş bir dizin hizalanmışsa, 40 sayfa ya da 160 (4 * 40) sıralama dört işlemci bellek gereksinimi azalır sayfaları. maxdop dizin seçeneği el ile parallelism derece azaltmak için kullanabilirsiniz.

dbcc komutlar

Bölümleri daha büyük bir sayı ile dbcc komutlarını yürütme sayısı bölümleri arttıkça daha uzun sürebilir.

Sorguları

Bölüm eleme kullanan sorguları-ebil-si olmak büyük bölüm sayısı ile karşılaştırılabilir ya da geliştirilmiş performans. Bölüm eleme kullanmayın sorguları yürütme sayısı bölümleri arttıkça daha uzun sürebilir.

Örneğin, 100 milyon satır ve sütunları bir tablo vardır varsayalım A, B, ve C. Senaryo 1'de, tablo sütun üzerinde 1000 bölümlere ayrılmıştır A. Senaryo 2'de, tablo sütun üzerinde 10,000 bölümlere ayrılmıştır A. Tablonun sütun filtre where yan tümcesine sahip bir sorgu Abölüm eleme yapmak ve bir bölümünü taramak. Olarak orada bir bölüm taramak için daha az satır aynı sorgulayan Senaryo 2 daha hızlı çalışabilir. b sütunu üzerinde filtre where yan tümcesi içeren sorgu tüm bölümleri tarar. Olarak taramak için daha az bölümleri sorgu senaryoda 1 2 senaryoda daha hızlı çalışabilir.

İstatistik hesaplaması Bölümlenmiş dizin işlemleri sırasında davranışı değişiklikleri

De SQL Server 2012, istatistik, tablodaki tüm satırlar bölümlenmiş bir dizin oluşturulduğunda veya yeniden tarayarak değil oluşturulur. Bunun yerine sorgu iyileştirici, istatistikleri üretmek için varsayılan örnekleme algoritmasını kullanır. Bölümlenmiş dizinler ile bir veritabanını yükselttikten sonra bu dizinler için histogram verileri bir fark fark edebilirsiniz. Bu davranış değişikliği sorgu performansını etkilemez. Tablodaki tüm satırları tarayarak bölümlenmiş dizinler hakkında istatistik elde etmek için, CREATE STATISTICS veya UPDATE STATISTICS deyimini FULLSCAN yan tümcesiyle kullanın.

ilişkili Görevler

Görevler

Konu

Bölüm işlevleri ve bölüm düzenleri oluşturun ve sonra bunları bir tablo ve dizin uygulayın açıklar.

Bölümlenmiş tablolar ve dizinler oluşturma

Bölümlenmiş tablolar ve dizinler değiştirme açıklar.

Modify Partitioned Tables and Indexes

İlişkili İçerik

Aşağıdaki raporları bölümlenmiş tablo ve dizin stratejileri ve uygulamaları yararlı bulabilirsiniz.