Aracılığıyla paylaş


Columnstore dizinlerindeki yenilikler

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'teki SQL Veritabanı

SQL Server'ın her sürümü için hangi columnstore özelliklerinin kullanılabilir olduğunu ve SQL Veritabanı, Azure Synapse Analytics ve Analytics Platform Sistemi'nin (PDW) en son sürümlerini öğrenin.

Ürün sürümleri için özellik özeti

Bu tabloda columnstore dizinleri ve bunların kullanılabildiği ürünler için temel özellikler özetlenmektedir.

Columnstore Dizin Özelliği SQL Server 2016 (13.x)1 SQL Server 2017 (14.x) SQL Server 2019 (15.x) SQL Server 2022 (16.x) SQL Server 2025 (17.x) Önizlemesi Azure SQL Veritabanı2 ve Azure SQL Yönetilen ÖrneğiAUTD Azure Synapse Analytics ayrılmış SQL havuzu
3 çok iş parçacıklı sorgular için toplu yürütme modu evet evet evet evet evet evet evet
Tek iş parçacıklı sorguların toplu iş modunda yürütülmesi evet evet evet evet evet evet evet
Arşiv sıkıştırma seçeneği evet evet evet evet evet evet evet
Anlık görüntü yalıtımı ve okundu olarak işlenen anlık görüntü yalıtımı evet evet evet evet evet evet evet
Tablo oluştururken columnstore dizinini belirtme evet evet evet evet evet evet evet
Always On, columnstore dizinlerini destekler evet evet evet evet evet evet evet
Always On özelliğine sahip okunabilir ikincil, salt okunur kümelenmemiş sütun deposu dizinini destekler. evet evet evet evet evet evet evet
Always On okunabilir ikincil yapı, güncellenebilir columnstore dizinleri destekler. evet evet evet evet evet
Yığın veya B ağacında salt okunur kümesiz sütun deposu dizini Evet 4 Evet 4 Evet 4 Evet 4 Evet 4 Evet 4 Evet 4
B ağacı veya yığın (heap) üzerinde güncellenebilir kümelenmemiş sütun deposu dizini evet evet evet evet evet evet evet
Kümesiz columnstore dizinine sahip olan bir yığın veya B ağacı üzerinde ek B ağacı dizinlerine izin verilir. evet evet evet evet evet evet evet
Güncellenebilir kümelenmiş columnstore indeksi evet evet evet evet evet evet evet
Kümelenmiş columnstore dizininde B ağacı dizini evet evet evet evet evet evet evet
Bellek için iyileştirilmiş bir tabloda Columnstore dizini evet evet evet evet evet evet evet
Kümelenmemiş columnstore dizin tanımı, filtrelenmiş koşul kullanmayı destekler evet evet evet evet evet evet evet
CREATE TABLE ve ALTER TABLE sütun deposu dizinleri için sıkıştırma gecikmesi seçeneği evet evet evet evet evet evet evet
nvarchar(max) türü desteği evet evet evet evet evet yok 5
Columnstore dizini, kalıcı olmayan bir şekilde hesaplanan bir sütuna sahip olabilir evet evet evet evet
Demet taşıyıcı arka plan birleştirme desteği evet evet evet evet evet
Düzenli kümelenmiş sütun deposu dizinleri evet evet evet evet
Sıralı kümelenmemiş columnstore indeksleri evet evet
Çevrimiçi sütun deposu dizini oluşturma ve yeniden oluşturma evet evet evet
Çevrimiçi sıralı columnstore dizini oluşturma ve yeniden oluşturma evet evet

1 SQL Server 2016 (13.x) SP1 ve sonraki sürümleri için columnstore dizinleri tüm sürümlerde kullanılabilir. SQL Server 2016 (13.x) (SP1 öncesi) ve önceki sürümler için columnstore dizinleri yalnızca Enterprise Edition'da kullanılabilir.
2 Azure SQL Veritabanı için columnstore dizinleri DTU Premium katmanlarında, DTU Standart katmanlarında ( S3 ve üzeri) ve tüm sanal çekirdek katmanlarında kullanılabilir.
3toplu iş modu işlemleri için paralellik (DOP) derecesi SQL Server Standard Edition için 2, SQL Server Web ve Express Sürümleri için 1 ile sınırlıdır. Bu sınırlama, disk tabanlı tablolar ve bellek için iyileştirilmiş tablolar üzerinde oluşturulan columnstore dizinlerini ifade eder.
4 Salt okunur bir kümelenmemiş columnstore dizini oluşturmak için, dizini salt okunur bir dosya grubunda depolayın.
5 Ayrılmış SQL havuzlarında desteklenmez ancak sunucusuz SQL havuzunda desteklenir.

SQL Server 2025 (17.x)

SQL Server 2025 (17.x) Önizlemesi şu özellikleri ekledi:

  • Sıralı, kümelenmemiş sütun deposu gerçek zamanlı operasyonel analizlerde sorgu performansını artırır.

    Daha fazla bilgi için bkz. Sıralı columnstore dizinleriyle performans ayarlama.

  • Sıralı columnstore dizini (kümelenmiş veya kümelenmemiş) artık çevrimiçi olarak oluşturulabilir veya yeniden oluşturulabilir.

    ONLINE = ON yan tümcesi mevcut olduğunda CREATE INDEX deyiminde ORDER belirtebilirsiniz. Çevrimiçi dizin işlemleri hakkında daha fazla bilgi için bkz. Dizin işlemlerini çevrimiçi gerçekleştirme.

  • Sıralı kümelenmiş columnstore dizinleri için iyileştirilmiş sıralama kalitesi.

    SQL Server 2025 (17.x) Önizleme sürümünde, sıralı bir kümelenmiş columnstore dizini çevrimiçi olarak oluşturulduğunda, sıralama algoritması bellekteki verileri sıralamak yerine kullanır tempdb . Dizin derlemesi için 1 ise MAXDOP , derleme çakışan segmentlere sahip olmayan tam sıralı bir kümelenmiş columnstore dizini oluşturur.

    Bu, dizini kullanarak sorguların performansını artırabilir. Ancak, taşmalar tempdb nedeniyle gerekli ek G/Ç yüzünden dizin oluşturma daha uzun sürebilir.

    Kümelenmiş bir columnstore dizini zaten varsa, tam olarak sıralanmış çevrimiçi dizin yeniden oluşturma işlemi devam ederken sorgular bunu kullanmaya devam edebilir.

  • Geliştirilmiş veritabanı ve dosya küçültme işlemleri.

    SQL Server'ın önceki sürümlerinde kümelenmiş columnstore dizini varchar(max), nvarchar(max), varbinary(max)gibi LOB veri türlerine sahip sütunlar içerdiğinde, bu sütunlar tarafından kullanılan veri sayfaları küçültme işlemleri tarafından taşınamaz. Sonuç olarak, küçültme veri dosyalarındaki alanı geri kazanmada daha az etkili olabilir.

    SQL Server 2025 (17.x) Önizlemesi'nde hem DBCC SHRINKDATABASE hem de DBCC SHRINKFILE komutları, columnstore dizinlerindeki LOB sütunları tarafından kullanılan veri sayfalarını taşıyabilir.

SQL Server 2022 (16.x)

SQL Server 2022 (16.x) şu özellikleri ekledi:

  • Sıralı kümelenmiş columnstore dizinleri, sıralı sütun koşullarını temel alarak sorguların performansını artırır. Sıralı columnstore dizinleri, veri kesimlerini tamamen atlayarak performansı artırabilir. Bu, columnstore verilerinde sorguların tamamlanması için gereken girdi/çıktı işlemlerini önemli ölçüde azaltabilir. Daha fazla bilgi için bkz. bölüm eleme. Daha fazla bilgi için bkz. CREATE COLUMNSTORE INDEX ve sıralı columnstore dizinleriyle performans ayarlama.
  • Dizelerin kümelenmiş columnstore satır grubu elenmesiyle koşul gönderimi, dize aramalarını iyileştirmek için sınır değerlerini kullanır. Tüm columnstore dizinleri, veri türüne göre gelişmiş segment eleme özelliğinden yararlanmaktadır. SQL Server 2022 'den (16.x) başlayarak, bu segment eleme özellikleri dize, ikili ve GUID veri türlerine ve ikiden büyük bir ölçek için datetimeoffset veri türüne genişletir. Daha önce, columnstore segment eleme yalnızca sayısal, tarih ve saat veri türleri ile ölçeği ikiden küçük veya buna eşit olan datetimeoffset veri türüne uygulanmaktaydı. SQL Server'ın dize min/mak segmentlerinin elemine olanak tanıyan bir sürümüne (SQL Server 2022 (16.x) ve sonraki sürümleri) yükselttikten sonra, columnstore dizini ALTER INDEX REBUILD veya CREATE INDEX WITH (DROP_EXISTING = ON) kullanılarak yeniden oluşturulana kadar bu özellikten yararlanamaz.
  • Columnstore satır gruplarının, örneğin LIKEgibi column LIKE 'string%' koşullarının ön ekleri için elenmesi. Segment kaldırma, LIKE'nin column LIKE '%string'gibi öneksiz kullanımı için desteklenmez.
  • Eklenen özellikler hakkında daha fazla bilgi için bkz. SQL Server 2022'deki yenilikler.

SQL Server 2019 (15.x)

SQL Server 2019 (15.x) şu yeni özellikleri ekler:

İşlevsel

SQL Server 2019 (15.x) ile birlikte, tuple mover, arka planda çalışan birleştirme görevi sayesinde desteklenir. Bu görev, belirli bir süre geçtikten sonra iç bir eşik tarafından belirlenen daha küçük OPEN delta satır gruplarını otomatik olarak sıkıştırır veya birçok satırın silindiği COMPRESSED satır gruplarını birleştirir. Daha önce, satır gruplarını kısmen silinmiş verilerle birleştirmek için dizin yeniden düzenleme işlemi gerekiyordu. Bu, columnstore dizin kalitesini zamanla artırır.

SQL Server 2017 (14.x)

SQL Server 2017 (14.x) bu yeni özellikleri ekler.

İşlevsel

  • SQL Server 2017 (14.x), kümelenmiş sütun deposu dizinlerinde kalıcı olmayan hesaplanan sütunları destekler. Kalıcı hesaplanan sütunlar kümelenmiş sütun deposu dizinlerinde desteklenmez. Hesaplanan bir sütunda kümelenmemiş sütun deposu dizini oluşturamazsınız.

SQL Server 2016 (13.x)

SQL Server 2016 (13.x), columnstore dizinlerinin performansını ve esnekliğini geliştirmek için önemli geliştirmeler ekler. Bu geliştirmeler, veri ambarı senaryolarını geliştirir ve gerçek zamanlı operasyonel analiz sağlar.

İşlevsel

  • Bir satır depolama tablosunda güncellenebilir bir sütun depolama dizini olabilir. Daha önce, kümelenmemiş sütun deposu dizini sadece okunabilirdi.

  • Kümelenmemiş columnstore dizin tanımı, filtrelenmiş koşul kullanmayı destekler. OLTP tablosuna columnstore dizini eklemenin performans etkisini en aza indirmek için filtrelenmiş bir koşul kullanarak yalnızca işletimsel iş yükünüzün soğuk verileri üzerinde bir kümelenmemiş columnstore dizini oluşturun.

  • Bellek içi tabloda bir sütun deposu dizini olabilir. Tablo oluşturulduğunda oluşturabilir veya daha sonra ALTER TABLE (Transact-SQL)ile ekleyebilirsiniz. Daha önce, yalnızca disk tabanlı bir tabloda columnstore index bulunabilirdi.

  • Kümelenmiş sütun deposu dizininde bir veya daha fazla kümelenmemiş satır deposu dizini olabilir. Daha önce columnstore dizini, kümelenmemiş dizinleri desteklemiyordu. SQL Server, DML işlemleri için kümelenmemiş dizinleri otomatik olarak korur.

  • Kümelenmiş sütun deposu dizininde bu kısıtlamaları uygulamak için B-ağacı dizini kullanarak birincil anahtarlar ve yabancı anahtarlar için destek sağlanır.

  • Columnstore dizinleri, işlem iş yükünün gerçek zamanlı operasyonel analiz üzerindeki etkisini en aza indiren bir sıkıştırma gecikmesi seçeneğine sahiptir. Bu seçenek, sık sık değişen satırların columnstore'da sıkıştırılmadan önce istikrar kazanmasını sağlar. Ayrıntılar için bkz. CREATE COLUMNSTORE INDEX (Transact-SQL) ve Gerçek zamanlı operasyonel analiziçin Columnstore'u kullanmaya başlama.

Veritabanı uyumluluk düzeyi 120 veya 130 için performans

  • Columnstore dizinleri, kaydedilmiş anlık görüntü yalıtım düzeyini (RCSI) ve anlık görüntü yalıtımını (SI) destekler. Bu, kilit kullanmadan işlem tutarlılığı olan analitik sorguları etkinleştirir.

  • Columnstore, dizini açıkça yeniden derlemeye gerek kalmadan silinen satırları kaldırarak dizin birleştirmeyi destekler. ALTER INDEX ... REORGANIZE deyimi, içsel olarak tanımlanmış bir politikaya göre, çevrimiçi bir işlem olarak silinmiş satırları columnstore'dan çıkartır.

  • Columnstore dizinlerine Always On okunabilir bir ikincil kopya üzerinde erişilebilir. Analiz sorgularını Always On yedek replikaya aktararak operasyonel analiz performansını artırabilirsiniz.

  • Toplu İletim, veri türü en fazla 8 bayt kullandığında ve bir dize veri türü olmadığında, tablo taramaları sırasında MIN, MAX, SUM, COUNTve AVG toplama işlevlerini hesaplar. Toplu iteleme, hem kümelenmiş columnstore dizinleri hem de kümelenmemiş columnstore dizinleri için GROUP BY yan tümcesi ile veya olmadan desteklenir. SQL Server'da bu geliştirme Enterprise sürümü için ayrılmıştır.

  • Koşul iletimi, VARCHAR/CHAR veya NVARCHAR/NCHAR türündeki dizeleri karşılaştıran sorguları hızlandırır. Bu, yaygın karşılaştırma işleçleri için geçerlidir ve bit eşlem filtreleri kullanan LIKE gibi işleçleri içerir. Bu, desteklenen tüm harmanlamalarla çalışır. SQL Server'da bu geliştirme Enterprise sürümü için ayrılmıştır.

  • Vektör tabanlı donanım özelliklerinden yararlanarak toplu iş modu işlemlerine yönelik iyileştirmeler. Veritabanı Altyapısı, AVX 2 (Gelişmiş Vektör Uzantıları) ve SSE 4 (Akış SIMD Uzantıları 4) donanım uzantıları için CPU desteği düzeyini algılar ve destekleniyorsa bunları kullanır. SQL Server'da bu geliştirme Enterprise sürümü için ayrılmıştır.

Veritabanı uyumluluk düzeyi 130 için performans

  • Bu işlemlerden herhangi birini kullanan sorgular için yeni toplu iş modu yürütme desteği:

    • SORT
    • Birden çok farklı işlev içeren toplamalar. Bazı örnekler: COUNT/COUNT, AVG/SUM, CHECKSUM_AGG, STDEV/STDEVP
    • Pencere toplama işlevleri: COUNT, COUNT_BIG, SUM, AVG, MIN, MAXve CLR
    • Pencere kullanıcı tanımlı toplamlar: CHECKSUM_AGG, STDEV, STDEVP, VAR, VARPve GROUPING
    • Window toplulaştırma analitik işlevleri: LAG, LEAD, FIRST_VALUE, LAST_VALUE, PERCENTILE_CONT, PERCENTILE_DISC, CUME_DISTve PERCENT_RANK
  • MAXDOP 1 altında veya seri sorgu planıyla çalışan tek iş parçacıklı sorgular toplu modda yürütülür. Önceden, toplu yürütme yalnızca çok iş parçacıklı sorgular ile yapılabilirdi.

  • Bellek için iyileştirilmiş tablo sorguları, hem satır deposundaki hem de sütun deposu dizinindeki verilere erişirken SQL InterOp modunda paralel planlar kullanabilir.

Desteklenebilirlik

Bu sistem görünümleri columnstore için yenidir:

Bellek içi OLTP tabanlı bu DMV'ler, sütun depoları için güncelleştirmeler içerir.

Sınırlama

  • Bellek içi tablolar için columnstore dizini tüm sütunları içermelidir; columnstore dizini filtrelenmiş bir koşula sahip olamaz.
  • Bellek içi tablolar için sütun deposu dizinlerindeki sorgular yalnızca birlikte çalışma modunda çalışır, yerel derleme modunda çalışmaz. Paralel yürütme desteklenir.

Bilinen sorunlar

Şunlar için geçerlidir: SQL Server 2022 (16.x) ve eski sürümler, Azure SQL Yönetilen Örneği2022

  • Sıkıştırılmış columnstore segmentlerindeki LOB sütunlar (varbinary(max), varchar(max) ve nvarchar(max)) tarafından kullanılan veri sayfaları DBCC SHRINKDATABASE ve DBCC SHRINKFILE tarafından taşınamaz. Bu sorun SQL Server 2025 (17.x) Önizleme sürümünde giderilmiştir.

SQL Server 2014 (12.x)

SQL Server 2014 (12.x), kümelenmiş columnstore dizinini birincil depolama biçimi olarak tanıttı. Bu, düzenli yüklemelerin yanı sıra güncelleştirme, silme ve ekleme işlemlerine de izin verdi.

  • Tablo, birincil tablonun depolama alanı olarak kümelenmiş sütun depolama dizinini kullanabilir. Tabloda başka dizine izin verilmez, ancak kümelenmiş columnstore dizini güncelleştirilebilir, böylece normal yüklemeler gerçekleştirebilir ve tek tek satırlarda değişiklik yapabilirsiniz.
  • Kümelenmemiş columnstore dizini, artık toplu iş modunda yürütülebilen ek işleçler dışında SQL Server 2012 (11.x) ile aynı işlevselliğe sahip olmaya devam eder. Yeniden oluşturma ve bölüm değiştirme kullanma dışında yine de güncelleştirilemez. Kümelenmemiş columnstore dizini yalnızca disk tabanlı tablolarda desteklenir, bellek içi tablolarda desteklenmez.
  • Kümelenmiş ve kümelenmemiş columnstore dizini, verileri daha fazla sıkıştıran bir arşiv sıkıştırma seçeneğine sahiptir. Arşivleme seçeneği hem bellekte hem de diskte veri boyutunu küçültmek için kullanışlıdır, ancak sorgu performansını yavaşlatmaktadır. Seyrek erişilen veriler için iyi çalışır.
  • Kümelenmiş columnstore dizini ve kümelenmemiş columnstore dizin işlevi çok benzer bir şekilde; aynı sütunlu depolama biçimini, aynı sorgu işleme altyapısını ve aynı dinamik yönetim görünümleri kümesini kullanır. Fark, birincil ve ikincil dizin türleri arasındadır ve kümelenmemiş sütun deposu dizini salt okunurdur.
  • Bu işleçler çok iş parçacıklı sorgular için toplu iş modunda çalışır: tarama, filtreleme, proje, birleştirme, gruplandırma ve tümünü birleştirme.

SQL Server 2012 (11.x)

SQL Server 2012 (11.x), sıralı olmayan columnstore dizinini satır deposu tablolarında başka bir dizin türü olarak ve columnstore verilerindeki sorgular için toplu işlem olarak tanıttı.

  • Bir satır deposu tablosunda bir tane kümelenmemiş sütun deposu dizini olabilir.
  • Columnstore dizini salt okunurdur. Columnstore dizinini oluşturduktan sonra, tabloyu INSERT, DELETEve UPDATE işlemleriyle güncelleştiremezsiniz; bu işlemleri gerçekleştirmek için dizini bırakmanız, tabloyu güncelleştirmeniz ve columnstore dizinini yeniden oluşturmanız gerekir. Bölüm değiştirme kullanarak tabloya ek veriler yükleyebilirsiniz. Bölüm değiştirmenin avantajı, columnstore dizinini bırakmadan ve yeniden derlemeden veri yükleyebilmenizdir.
  • Columnstore dizini, verilerin bir kopyasını depoladığı için her zaman fazladan depolama alanı (genellikle rowstore üzerinden 10% daha) gerektirir.
  • Toplu işlem 2 kat veya daha iyi sorgu performansı sağlar, ancak yalnızca paralel sorgu yürütme için kullanılabilir.