Aracılığıyla paylaş


Bölümlenmiş tablolar ve dizinler

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

SQL Server, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği, tablo ve dizin bölümlemeyi destekler. Bölümlenmiş tablo ve dizinlerin verileri, veritabanındaki birden fazla dosya grubuna yayılmış veya tek bir dosya grubunda depolanmış olabilecek birimlere ayrılmıştır. Bir dosya grubunda birden çok dosya olduğunda, veriler orantılı doldurma algoritması kullanılarak dosyalara yayılır. Veriler yatay olarak bölümlenir, böylece satır grupları tek tek bölümlere eşlenir. Tek bir dizin veya tablonun tüm bölümleri aynı veritabanında bulunmalıdır. Veriler üzerinde sorgular veya güncelleştirmeler gerçekleştirildiğinde tablo veya dizin tek bir mantıksal varlık olarak değerlendirilir.

SQL Server 2016 (13.x) SP1'inden önce, bölümlenmiş tablolar ve dizinler SQL Server'ın her sürümünde kullanılamamıştı. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. SQL Server 2022'nin sürümleri ve desteklenen özellikleri. Bölümlenmiş tablolar ve dizinler, Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği'nin tüm hizmet katmanlarında kullanılabilir.

Tablo bölümleme, Azure Synapse Analytics'teki ayrılmış SQL havuzlarında da kullanılabilir ve bazı söz dizimi farklılıkları vardır. Özel SQL havuzundaki Bölümleme tablolarıhakkında daha fazla bilgi edinin.

Önemli

Veritabanı altyapısı varsayılan olarak en çok 15.000 bölümü destekler. SQL Server 2012 (11.x) öncesi sürümlerde bölüm sayısı varsayılan olarak 1.000 ile sınırlıdır.

Bölümlemenin avantajları

Büyük tabloların veya dizinlerin bölümlenmesi aşağıdaki yönetilebilirlik ve performans avantajlarına sahip olabilir.

  • Veri toplamanın bütünlüğünü korurken verilerin alt kümelerini hızlı ve verimli bir şekilde aktarabilir veya bu alt kümelere erişebilirsiniz. Örneğin, OLTP'den OLAP sistemine veri yükleme gibi bir işlem, verilerin bölümlenmediği dakikalar ve saatler yerine yalnızca saniyeler sürer.

  • Bir veya daha fazla bölümde bakım veya veri saklama işlemlerini daha hızlı gerçekleştirebilirsiniz. İşlemler, tablonun tamamı yerine yalnızca bu veri alt kümelerini hedeflediğinden daha verimlidir. Örneğin, bir veya daha fazla bölümdeki verileri sıkıştırmayı, bir dizinin bir veya daha fazla bölümünü yeniden oluşturmayı veya tek bir bölümdeki verileri kesmeyi seçebilirsiniz. Ayrıca tek tek bölümleri tek bir tablodan arşiv tablosuna da geçirebilirsiniz.

  • Sık çalıştırdığınız sorgu türlerine bağlı olarak sorgu performansını geliştirebilirsiniz. Örneğin, bölümleme sütunları tabloların birleştirildiği sütunlarla aynı olduğunda, sorgu iyileştirici iki veya daha fazla bölümlenmiş tablo arasındaki eş birleşim sorgularını daha hızlı işleyebilir. Daha fazla bilgi için Sorgular bölümüne bakın.

Bir tablonun tamamı yerine bölüm düzeyinde kilit yükseltmeyi etkinleştirerek performansı geliştirebilirsiniz. Bu, tablodaki kilit rekabetini azaltabilir. LOCK_ESCALATION ifadesinin ALTER TABLE seçeneğini AUTO olarak ayarlayarak, bölüme kilit yükseltmesine izin verip kilit çekişmesini azaltın.

Bileşenler ve kavramlar

Tablo ve dizin bölümleme için aşağıdaki koşullar geçerlidir.

Partition işlevi

Bölümleme işlevi, bir tablo veya dizinin satırlarının bölümleme sütunu olarak adlandırılan belirli bir sütunun değerlerine göre bir bölüm kümesine nasıl eşlendiğini tanımlayan bir veritabanı nesnesidir. Bölümleme sütunundaki her değer bölümleme işlevine bir giriştir ve bu da bir bölüm değeri döndürür.

partition işlevi, tablonun sahip olacağı bölüm sayısını ve bölüm sınırlarını tanımlar. Örneğin, satış siparişi verilerini içeren bir tablo söz konusuysa, tabloyu satış tarihi gibi bir tarih saat sütununa göre 12 (aylık) bölüme bölmek isteyebilirsiniz.

Aralık türü (SOL veya SAĞ), bölüm işlevinin sınır değerlerinin sonuçta elde edilen bölümlere nasıl yerleştirileceğini belirtir:

  • SOL aralığı, aralık değerleri veritabanı motoruna göre soldan sağa artan düzende sıralandığında sınır değerin sınır değer aralığının sol tarafında olduğunu belirtir. Başka bir deyişle, en yüksek sınırlayıcı değer bir bölüme eklenir.
  • SAĞ aralık, aralık değerleri veritabanı altyapısına göre soldan sağa artan düzende sıralandığında sınır değerinin sınır değeri aralığının sağ tarafına ait olduğunu belirtir. Başka bir deyişle, her bölüme en düşük sınırlayıcı değer eklenir.

LEFT veya RIGHT belirtilmezse, SOL aralık varsayılan değerdir.

Örneğin, aşağıdaki bölüm işlevi bir tablo veya dizini, bir yılın her ayına ait değerlerin bulunduğu bir datetime sütununa göre 12 bölüme ayırır. Sınır değerlerinin her bölümde daha düşük sınırlayıcı değerler olarak görev yapacağına işaret eden bir RIGHT aralığı kullanılır. BIR tabloyu datetime veya datetime2 veri türlerinden oluşan bir sütuna göre bölümlere ayırırken SAĞ aralıklarla çalışmak genellikle daha kolaydır; çünkü gece yarısı değerine sahip satırlar aynı gün sonraki değerlere sahip satırlarla aynı bölümde depolanır. Benzer şekilde, tarih veri türünü ve bir ayın veya daha fazlasının bölümlerini kullanıyorsanız, RIGHT aralığı ayın ilk gününü o ayın sonraki günleriyle aynı bölümde tutar. Bu, tüm günlük verileri sorgularken kesin Bölme eleme işlemine yardımcı olur.

CREATE PARTITION FUNCTION [myDateRangePF1] (datetime)
AS RANGE RIGHT FOR VALUES ('2022-02-01', '2022-03-01', '2022-04-01',
               '2022-05-01', '2022-06-01', '2022-07-01', '2022-08-01',
               '2022-09-01', '2022-10-01', '2022-11-01', '2022-12-01');

Aşağıdaki tabloda, bölümleme sütunu datecol üzerinde bu bölüm işlevini kullanan bir tablo veya dizinin nasıl bölümlendiği gösterilmektedir. 1 Şubat işlevinde tanımlanan ilk sınır noktasıdır, bu nedenle bölüm 2'nin alt sınırı olarak görev yapar.

Bölüm 1 2 ... 11 12
Değerler datecol<2022-02-01 12:00AM datecol>= 2022-02-01 12:00AM AND datecol<2022-03-01 12:00AM datecol>= 2022-11-01 12:00AM AND kolon1<2022-12-01 12:00AM datecol>= 2022-12-01 12:00AM

Hem ARALIK SOL HEM DE ARALIK SAĞI için, en soldaki bölüm alt sınırı olarak veri türünün en düşük değerine ve en sağdaki bölüm ise veri türünün üst sınırı olarak en yüksek değere sahiptir.

CREATE PARTITION FUNCTION bölümünde SOL ve SAĞ bölüm işlevlerine daha fazla örnek bulabilirsiniz.

Bölüm düzeni

Bölüm düzeni, bölüm işlevinin bölümlerini bir dosya grubuna veya birden çok dosya grubuna eşleyen bir veritabanı nesnesidir.

CREATE PARTITION SCHEME'da bölüm düzenleri oluşturmak için örnek söz dizimi bulun.

Dosya Grupları

Bölümlerinizi birden çok dosya grubuna yerleştirmenin birincil nedeni, bölümler üzerinde yedekleme ve geri yükleme işlemlerini bağımsız olarak gerçekleştirebildiğinizden emin olmaktır. Bunun nedeni, tek tek dosya gruplarında yedekleme gerçekleştirebilmenizdir. Katmanlı depolama kullanırken, birden çok dosya grubu kullanmak belirli depolama katmanlarına belirli bölümler atamanıza olanak tanır. Örneğin, daha eski ve daha az sıklıkta erişilen bölümleri daha yavaş ve daha ucuz depolama alanına yerleştirme. Diğer tüm bölümleme avantajları, kullanılan dosya gruplarının sayısından veya belirli dosya gruplarında bölüm yerleştirmeden bağımsız olarak geçerlidir.

Bölümlenmiş tablolar için dosyaları ve dosya gruplarını yönetmek, zaman içinde yönetim görevlerine önemli bir karmaşıklık katabilir. Yedekleme ve geri yükleme yordamlarınız birden çok dosya grubunun kullanımından yararlanmıyorsa, tüm bölümler için tek bir dosya grubu önerilir. Bölümlenmiş nesnelere dosya ve dosya grubu tasarlama kuralları , bölümlenmemiş nesneler için de geçerlidir.

Uyarı

Bölümleme, Azure SQL Veritabanı'nda tam olarak desteklenmez. Azure SQL Veritabanı'nda yalnızca PRIMARY dosya grubu desteklendiğinden, tüm bölümler PRIMARY dosya grubuna yerleştirilmelidir.

ALTER DATABASE (Transact-SQL) Dosya ve Dosya Grubu Seçenekleri'nde SQL Server ve Azure SQL Yönetilen Örneği için dosya grupları oluşturmak için örnek kod bulun.

Bölümleme sütunu

Bölüm işlevinin tabloyu veya dizini bölümleme için kullandığı tablo veya dizinin sütunu. Bölümleme sütunu seçerken aşağıdaki noktalar geçerlidir:

  • Bölüm işlevine katılan hesaplanan sütunlar PERSISTED olarak açıkça oluşturulmalıdır.
    • Bölüm sütunu olarak yalnızca bir sütun kullanılabildiğinden, bazı durumlarda hesaplanan sütunla birden çok sütunun bir arada kullanılması yararlı olabilir.
  • Dizin anahtarı sütunları olarak kullanılmak üzere geçerli olan tüm veri türlerinin sütunları, zaman damgası dışında bölümleme sütunu olarak kullanılabilir.
  • ntext, text, image, xml, varchar(max), nvarchar(max)ve varbinary(max)gibi büyük nesne (LOB) veri türlerinin sütunları belirtilemiyor.
  • Microsoft .NET Framework ortak dil çalışma zamanı (CLR) kullanıcı tanımlı tür ve takma ad veri türü sütunları belirtilemiyor.

Bir nesneyi bölümlendirmek için CREATE TABLE, ALTER TABLE ve CREATE INDEX deyimlerinde bölüm düzeni ve bölümleme sütununu belirtin.

Kümelenmemiş dizin oluştururken, partition_scheme_name veya dosya grubu belirtilmezse ve tablo bölümlenmişse dizin, temel alınan tabloyla aynı bölümleme sütunu kullanılarak aynı bölümleme düzenine yerleştirilir. Var olan bir dizinin bölümlenme biçimini değiştirmek için, DROP_EXISTING yan tümcesiyle CREATE INDEX kullanın. Bu, bölümlenmemiş bir dizini bölümlemenize, bölümlenmiş dizini bölümlenmemiş hale getirmenize veya dizinin bölüm düzenini değiştirmenize olanak tanır.

Hizalanmış dizin

İlgili tabloyla aynı bölüm düzeni üzerinde oluşturulan bir dizin. Bir tablo ve dizinleri uyumlu olduğunda, veritabanı altyapısı hem tablonun hem de dizinlerinin bölüm yapısını korurken tablodaki bölümleri hızlı ve verimli bir şekilde değiştirebilir. Bir dizinin temel tablosuyla hizalanması için aynı adlandırılmış bölüm işlevine katılması gerekmez. Bununla birlikte, dizinin ve temel tablonun bölüm işlevi aslında aynı olmalıdır; şöyle ki:

  • Bölüm işlevlerinin bağımsız değişkenleri aynı veri türüne sahiptir.
  • Aynı sayıda bölüm tanımlarlar.
  • Bölümler için aynı sınır değerlerini tanımlar.

Kümelenmiş dizinleri bölümleme

Kümelenmiş dizini bölümlerken, kümeleme anahtarı bölümleme sütununu içermelidir. Nonunique kümelenmiş dizini bölümlerken ve bölümleme sütunu kümeleme anahtarında açıkça belirtilmediğinde, veritabanı altyapısı bölümleme sütununu varsayılan olarak kümelenmiş dizin anahtarları listesine ekler. Kümelenmiş dizin benzersizse, kümelenmiş dizin anahtarının bölümleme sütununu içerdiğini açıkça belirtmeniz gerekir. Kümelenmiş dizinler ve dizin mimarisi hakkında daha fazla bilgi için bkz. Kümelenmiş Dizin Tasarımı Yönergeleri.

Kümelenmemiş dizinleri bölümleme

Benzersiz bir kümelenmemiş dizini bölümlerken dizin anahtarı bölümleme sütununu içermelidir. Bir nonunique, nonclustered dizini bölümlerken veritabanı altyapısı, dizinin temel tabloyla hizalandığından emin olmak için bölümleme sütununu varsayılan olarak dizinin anahtar olmayan (dahil) sütunu olarak ekler. Veritabanı altyapısı, dizinde zaten varsa bölümleme sütununu dizine eklemez. Kümelenmemiş dizinler ve dizin mimarisi hakkında daha fazla bilgi için bkz. Kümelenmemiş Dizin Tasarımı Yönergeleri.

Hizalanmamış dizin

Hizalanmamış dizin, karşılık gelen tablosundan farklı bir şekilde bölümlenmiştir. Diğer bir ifadeyle dizin, temel tablodan ayrı bir dosya grubuna veya dosya grubu kümesine yerleştiren farklı bir bölüm düzenine sahiptir. Hizalanmamış bölümlenmiş dizin tasarlamak aşağıdaki durumlarda yararlı olabilir:

  • Temel tablo henüz bölümlenmemiş.
  • Dizin anahtarı benzersizdir ve tablonun bölümleme sütununu içermez.
  • Temel tablonun, farklı birleştirme sütunları kullanılan daha fazla tabloyla eşlenen birleşimlere katılmasını istiyorsunuz.

Bölümlendirme eleme

Sorgu iyileştiricisinin, sorgunun filtre ölçütlerini karşılamak için yalnızca ilgili bölümlere eriştiği işlem.

Bölümlenmiş Tablolarda ve Dizinlerde Sorgu İşleme Geliştirmeleri bölümünde bölüm eleme ve ilgili kavramlar hakkında daha fazla bilgi edinin.

Sınırlamalar

  • Bölüm işlevinin ve düzeninin kapsamı, oluşturuldukları veritabanıyla sınırlıdır. Veritabanı içinde bölüm işlevleri diğer işlevlerden ayrı bir ad alanında bulunur.

  • Bölümlenmiş tablodaki satırlardan herhangi biri bölümleme sütunundaKIL'lere sahipse, bu satırlar en soldaki bölüme yerleştirilir. Ancak, NULL ilk sınır değeri olarak belirtilirse ve bölüm işlevi tanımında RANGE RIGHT belirtilirse, en soldaki bölüm boş kalır ve NULL'ler ikinci bölüme yerleştirilir.

Performans yönergeleri

Veritabanı altyapısı, tablo veya dizin başına en çok 15.000 bölümü destekler. Ancak, 1.000'den fazla bölüm kullanmanın bellek, bölümlenmiş dizin işlemleri, DBCC komutları ve sorgular üzerinde etkileri vardır. Bu bölümde, 1.000'den fazla bölüm kullanmanın performans üzerindeki etkileri açıklanır ve gerektiğinde geçici çözümler sağlanır.

Bölümlenmiş tablo veya dizin başına en fazla 15.000 bölüme izin verildiğinde, verileri uzun süreler boyunca tek bir tabloda depolayabilirsiniz. Ancak, verileri yalnızca gerekli olduğu sürece tutmanız ve performans ile bölüm sayısı arasında dengeyi korumanız gerekir.

Bellek kullanımı ve yönergeler

Çok sayıda bölüm kullanılıyorsa en az 16 GB RAM kullanmanızı öneririz. Sistemde yeterli bellek yoksa Veri İşleme Dili (DML) deyimleri, Veri Tanım Dili (DDL) deyimleri ve diğer işlemler yetersiz bellek nedeniyle başarısız olabilir. Çok fazla bellek kullanan işlemler çalıştıran 16 GB RAM'e sahip sistemlerde çok sayıda bölümde çalışan işlemlerde bellek yetersiz kalabilir. Bu nedenle, 16 GB'ın üzerinde belleğiniz arttıkça performans ve bellek sorunlarıyla karşılaşma olasılığınız da o kadar düşüktür.

Bellek sınırlamaları, veritabanı altyapısının bölümlenmiş dizin oluşturma performansını veya becerisini etkileyebilir. Bu durum, özellikle dizin temel tablosuyla hizalanmamışsa veya kümelenmiş diziniyle hizalanmamışsa ( tabloda zaten kümelenmiş bir dizin varsa) durumdur.

SQL Server ve Azure SQL Yönetilen Örneği'nde index create memory (KB) Sunucu Yapılandırma Seçeneğini artırabilirsiniz. Daha fazla bilgi için bkz . Sunucu yapılandırması: dizin oluşturma belleği. Azure SQL Veritabanı için, Azure portalındaki veritabanının daha fazla bellek ayırması için hizmet düzeyi hedefini geçici veya kalıcı olarak artırmayı göz önünde bulundurun.

Bölümlenmiş dizin işlemleri

1.000'den fazla bölümü olan bir tabloda hizalanmamış dizinler oluşturmak ve yeniden oluşturmak mümkündür, ancak desteklenmez. Bunu yapmak, bu işlemler sırasında performansın düşmesine veya aşırı bellek tüketimine neden olabilir.

Hizalanmış dizinlerin oluşturulması ve yeniden oluşturulması, bölüm sayısı arttıkça yürütülmesi daha uzun sürebilir. Performans ve bellek sorunlarıyla karşılaşabileceğiniz gibi dizin oluşturma ve yeniden oluşturma komutlarını aynı anda çalıştırmamanızı öneririz.

Veritabanı altyapısı bölümlenmiş dizinler oluşturmak için sıralama gerçekleştirdiğinde, önce her bölüm için bir sıralama tablosu oluşturur. Ardından sıralama tablolarını her bölümün ilgili dosya grubunda veya tempdb SORT_IN_TEMPDB dizin seçeneği belirtilmişse oluşturur. Her sıralama tablosunun oluşturulması için en az bellek miktarı gerekir. Temel tablosuyla hizalanmış bölümlenmiş bir dizin oluştururken, sıralama tabloları daha az bellek kullanılarak birer birer oluşturulur. Ancak, hizalanmamış bölümlenmiş dizin oluştururken sıralama tabloları aynı anda oluşturulur. Sonuç olarak, bu eşzamanlı sıralamaları işlemek için yeterli bellek olmalıdır. Bölüm sayısı ne kadar fazlaysa bellek de o kadar fazla gereklidir. Her bölüm için her sıralama tablosunun en küçük boyutu 40 sayfadır ve sayfa başına 8 kilobayttır. Örneğin, 100 bölümlü hizalanmamış bölümlenmiş dizin, aynı anda 4.000 (40 * 100) sayfayı seri olarak sıralamak için yeterli bellek gerektirir. Bu bellek kullanılabilir durumdaysa derleme işlemi başarılı olur, ancak performans olumsuz etkilenebilir. Bu bellek kullanılamıyorsa derleme işlemi başarısız olur. Alternatif olarak, 100 bölümlü hizalanmış bölümlenmiş dizin, sıralamalar aynı anda gerçekleştirilemediğinden 40 sayfayı sıralamak için yalnızca yeterli bellek gerektirir.

Hem hizalanmış hem de hizalanmamış dizinler için, veritabanı altyapısı çok işlemcili bir bilgisayarda derleme işlemine sorgu paralelliği kullanıyorsa bellek gereksinimi daha yüksek olabilir. Bunun nedeni paralellik derecesi (DOP) ne kadar büyükse bellek gereksiniminin de o kadar yüksek olmasıdır. Örneğin, veritabanı altyapısı DOP'yi 4 olarak ayarlarsa, 100 bölümlü hizalanmamış bölümlenmiş dizin, aynı anda 4.000 sayfayı veya 16.000 sayfayı sıralamak için dört işlemci için yeterli bellek gerektirir. Bölümlenmiş dizin hizalanmışsa, bellek gereksinimi 40 sayfayı veya 160 (4 * 40) sayfayı sıralayan dört işlemciye indirilir. Paralellik derecesini el ile azaltmak için MAXDOP dizin seçeneğini kullanabilirsiniz.

DBCC komutları

Daha fazla sayıda bölümle, bölüm sayısı arttıkça DBCC CHECKDB ve DBCC CHECKTABLE gibi DBCC komutlarının yürütülmesi daha uzun sürebilir.

Sorular

Bir tablo veya dizini bölümledikten sonra, bölüm eleme kullanan sorgular, daha fazla sayıda bölüme sahip olduklarında karşılaştırılabilir veya daha iyi bir performans gösterebilir. Bölüm eleme kullanmayan sorguların yürütülmesi, bölüm sayısı arttıkça daha uzun sürebilir.

Örneğin, bir tabloda 100 milyon satır ve sütun A, Bve Colduğunu varsayalım.

  • Senaryo 1'de tablo sütununda A1.000 bölüme ayrılmıştır.
  • Senaryo 2'de tablo sütununda A10.000 bölüme ayrılmıştır.

Tablodaki bir WHERE sorgusu, sütunda A bir yan tümce filtrelemesi olduğunda bölüm eleme gerçekleştirir ve bir bölümü tarar. Bir bölümde taranacak satır sayısı az olduğundan, 2. senaryoda aynı sorgu daha hızlı çalıştırılabilir. WHERE koşulunu B sütununda içeren bir sorgu, tüm bölümleri tarar. 1. senaryoda sorgu, taranacak bölüm sayısı az olduğundan senaryo 2'den daha hızlı çalışabilir.

Bölümleme sütunu dışındaki sütunlarda TOP veya MAX/MIN gibi işleçler kullanan sorgular, tüm bölümlerin değerlendirilmesi gerektiğinden bölümlemede düşük performansla karşılaşabilir.

Benzer şekilde, tek satırlı arama veya küçük aralıklı tarama gerçekleştiren bir sorgu bölümlenmiş tabloya göre daha uzun sürer. Sorgu koşulu bölümleme sütununu içermiyorsa bölümlenmiş tabloya kıyasla daha uzun sürer çünkü bölümlemeler olduğu kadar çok arama veya tarama gerçekleştirmesi gerekir. Bu nedenle bölümleme, bu tür sorguların yaygın olduğu OLTP sistemlerinde performansı nadiren artırır.

İki veya daha fazla bölümlenmiş tablo arasında denklik içeren sorguları sık sık çalıştırıyorsanız, bölümleme sütunları tabloların birleştirildiği sütunlarla aynı olmalıdır. Ayrıca, tablolar veya dizinleri yan yana yerleştirilmelidir. Bu, aynı adlandırılmış bölüm işlevini kullandıkları veya temelde aynı olan farklı bölüm işlevleri kullandıkları anlamına gelir:

  • Bölümleme için kullanılan parametrelerin sayısı aynıdır ve karşılık gelen parametreler aynı veri türleridir.
  • Aynı sayıda bölüm tanımlayın.
  • Bölümler için aynı sınır değerlerini tanımlayın.

Bu şekilde, bölümlerin kendileri birleştirilebileceği için sorgu iyileştiricisi birleştirmeyi daha hızlı işleyebilir. Bir sorgu birlikte konumlandırılmamış veya birleştirme alanında bölümlenmemiş iki tabloyu birleştirirse, bölümlerin varlığı sorgu işlemeyi hızlandırmak yerine yavaşlatabilir.

Bazı sorgularda kullanmak $PARTITION yararlı olabilir. $PARTITION'da daha fazla bilgi edinin.

Bölümlenmiş tablolar ve dizinler için paralel sorgu yürütme stratejisi ve ek en iyi yöntemler de dahil olmak üzere sorgu işlemede bölüm işleme hakkında daha fazla bilgi için bkz. Bölümlenmiş Tablolarda ve Dizinlerde Sorgu İşleme Geliştirmeleri.

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

Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve SQL Server 2012 (11.x) ve üzeri sürümlerde, bölümlenmiş dizin oluşturulduğunda veya yeniden oluşturulduğunda tablodaki tüm satırlar taranarak istatistikler oluşturulmaz. Bunun yerine sorgu iyileştirici, istatistikleri oluşturmak için varsayılan örnekleme algoritmasını kullanır.

Bölümlenmiş dizinleri olan bir veritabanını 2012'den (11.x) düşük bir SQL Server sürümünden yükselttikten sonra, bu dizinlerin histogram verilerinde bir fark fark edebilirsiniz. Davranıştaki bu değişiklik sorgu performansını etkileyebilir. Tablodaki tüm satırları tarayarak bölümlenmiş dizinlerle ilgili istatistikleri almak için CREATE STATISTICS yan tümcesiyle UPDATE STATISTICS veya FULLSCAN kullanın.