Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analytics Platform Sistemi (PDW)
SQL veritabanı Microsoft Fabric
Columnstore dizinleri, büyük veri ambarı olgu tablolarını depolamak ve sorgulamak için standarttır. Bu dizin, geleneksel satır odaklı depolamaya göre veri ambarınızdaki sorgu performansının 10 katına kadar kazanç elde etmek için sütun tabanlı veri depolamayı ve sorgu işlemeyi kullanır. Sıkıştırılmamış veri boyutuna göre, veri sıkıştırma oranını 10 kata kadar artırabilir ve bu oranda kazanç sağlayabilirsiniz. SQL Server 2016 (13.x) SP1'inden başlayarak columnstore dizinleri, işlemsel bir iş yükünde gerçek zamanlı performans analizi çalıştırma özelliği olan operasyonel analizi etkinleştirir.
İlgili bir senaryo hakkında bilgi edinin:
- Veri ambarında columnstore dizinleri
- Gerçek zamanlı operasyonel analiz için columnstore ile çalışmaya başlamanın yolları
Columnstore dizini nedir?
Columnstore dizini, sütunlu veri biçimini kullanarak verileri depolamaya, almaya ve yönetmeye yönelik bir teknolojidir. Bu sütunlu veri biçimi, columnstore olarak adlandırılır.
Önemli terimler ve kavramlar
Aşağıdaki anahtar terimler ve kavramlar columnstore dizinleriyle ilişkilendirilir.
Kolonstore
Sütun deposu, mantıksal olarak satır ve sütun içeren bir tablo olarak düzenlenmiş ve fiziksel olarak sütun tabanlı veri biçiminde depolanan verilerdir.
Rowstore (Satır Deposu)
Satır deposu, mantıksal olarak satırlar ve sütunlar içeren bir tablo olarak düzenlenmiş ve fiziksel olarak satır başına veri biçiminde depolanan verilerdir. Bu biçim, ilişkisel tablo verilerini depolamanın geleneksel yoludur. SQL Server'da, rowstore, verilerin depolama biçimi olarak yığın, kümelenmiş dizin veya bellek için optimize edilmiş bir tablo olduğu tablo türünü belirtir.
Not
Columnstore dizinleri hakkındaki tartışmalarda, veri depolama biçimini vurgulayan satır deposu ve columnstore terimleri kullanılır.
Satır grubu
Satır grubu, aynı anda sütun deposu biçiminde sıkıştırılan bir satır grubudur. Bir satır grubu genellikle satır grubu başına maksimum olan 1.048.576 satırı içerir.
Yüksek performans ve yüksek sıkıştırma oranları için columnstore dizini tabloyu satır grupları halinde dilimler ve sonra her satır grubunu sütuna göre sıkıştırır. Satır grubundaki satır sayısı sıkıştırma oranlarını artıracak kadar büyük ve bellek içi işlemlerden yararlanacak kadar küçük olmalıdır.
Tüm verilerin silinmiş olduğu bir satır grubu, COMPRESSED durumundan TOMBSTONE durumuna geçer ve daha sonra demet-taşıyıcı olarak bilinen bir arka plan işlemi tarafından kaldırılır. Satır grubu durumları hakkında daha fazla bilgi için bkz. sys.dm_db_column_store_row_group_physical_stats (Transact-SQL).
Bahşiş
Çok fazla küçük satır grubu olması columnstore dizin kalitesini düşürür. SQL Server 2017 (14.x) tarihine kadar, silinen satırları kaldırmayı ve sıkıştırılmış satır gruplarını birleştirmeyi belirleyen bir iç eşik ilkesi izleyerek daha küçük SıKıŞTıRıLMıŞ satır gruplarını birleştirmek için yeniden düzenleme işlemi gerekir.
SQL Server 2019'dan (15.x) başlayarak, çok sayıda satırın silindiği SıKıŞTıRıLMıŞ satır gruplarını birleştirmek için arka plan birleştirme görevi de çalışır.
Daha küçük satır grupları birleştirildikten sonra dizin kalitesi geliştirilmelidir.
Not
SQL Server 2019 (15.x), Azure SQL Veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics'teki ayrılmış SQL havuzlarından başlayarak, tuple-mover'a, iç eşik tarafından belirlenen süreden beri var olan daha küçük OPEN delta satır gruplarını otomatik olarak sıkıştıran veya çok sayıda satırın silindiği COMPRESSED satır gruplarını birleştiren arka plan birleştirme göreviyle yardımcı olunur. Bu durum, zamanla columnstore dizin kalitesini artırır.
Sütun kesimi
Sütun kesimi, satır grubunun içindeki bir veri sütunudur.
- Her satır grubu, tablodaki her sütun için bir sütun kesimi içerir.
- Her sütun kesimi birlikte sıkıştırılır ve fiziksel medyada depolanır.
- Bölümleri okumadan hızlı bir şekilde ortadan kaldırmaya olanak sağlamak için her segmente sahip meta veriler vardır.
Kümelenmiş sütun deposu dizini
Kümelenmiş columnstore dizini, tablonun tamamı için fiziksel depolama alanıdır.
Kümelenmiş bir sütun deposu dizinini mantıksal diyagramı
Sütun kesimlerinin parçalanma oranını azaltmak ve performansı artırmak için columnstore dizini bazı verileri geçici olarak deltastore adlı kümelenmiş dizinde ve silinen satırlar için B ağacı kimlikleri listesinde depolayabilir. Deltastore işlemleri perde arkasında yürütülür. Doğru sorgu sonuçlarını döndürmek için kümelenmiş columnstore dizini hem columnstore hem de deltastore'dan gelen sorgu sonuçlarını birleştirir.
Not
Belgelerde genellikle dizinlere başvuruda B ağacı terimi kullanılır. Rowstore dizinlerinde Veritabanı Altyapısı bir B+ ağacı uygular. Bu, sütun deposu dizinleri veya bellek için iyileştirilmiş tablolardaki dizinler için geçerli değildir. Daha fazla bilgi için SQL Server ve Azure SQL dizin mimarisi ve tasarım kılavuzuna bakın.
Delta satırgrubu
Delta satır grubu, yalnızca columnstore dizinleriyle kullanılan kümelenmiş bir B ağacı dizinidir. Satır sayısı belirli bir eşiğe (1.048.576 satır) ulaşıncaya kadar satırları depolayarak, ardından columnstore'a taşıyarak columnstore'un sıkıştırma ve performansını geliştirir.
Delta satır grubu en fazla satır sayısına ulaştığında, OPEN durumundan KAPALI durumuna geçiş yapılır. Tuple-mover adı verilen bir arka plan işlemi, kapalı satır gruplarını kontrol eder. İşlem kapalı bir satır grubu bulursa, delta satır grubunu sıkıştırır ve bunu COMPRESSED satır grubu olarak columnstore'da depolar.
Bir delta satır grubu sıkıştırıldıktan sonra, mevcut delta satır grubu, ona hiçbir referans kalmadığında tuple taşıyıcı tarafından kaldırılmak üzere TOMBSTONE durumuna geçer.
Satır grubu durumları hakkında daha fazla bilgi için bkz. sys.dm_db_column_store_row_group_physical_stats (Transact-SQL).
Not
SQL Server 2019'dan (15.x) başlayarak, tuple-mover'a, bir iç eşik tarafından belirlendiği şekilde bir süredir var olan küçük OPEN delta satır gruplarını otomatik olarak sıkıştıran veya çok sayıda satırın silindiği sıkıştırılmış satır gruplarını bir araya getiren bir arka plan birleştirme görevi yardım eder. Bu durum, zamanla columnstore dizin kalitesini artırır.
Deltastore
Bir columnstore dizininde birden fazla delta satır grubu olabilir. Tüm delta satır grupları topluca deltastore olarak adlandırılır.
Büyük bir toplu yükleme sırasında satırların çoğu, deltastore'a uğramadan doğrudan columnstore'a (sütun deposu) gider. Toplu yükün sonundaki bazı satırlar, 102.400 satır olan bir satır grubunun en küçük boyutunu karşılamak için sayı olarak çok az olabilir. Sonuç olarak, son satırlar columnstore yerine deltastore'a gider. 102.400 satırdan az bir içeriğe sahip küçük toplu yüklerde, tüm satırlar doğrudan deltastore'a gider.
Küme dışı sütun deposu dizini
Kümelenmemiş columnstore dizini ve kümelenmiş columnstore dizini aynı işlevi gösterir. Aradaki fark, kümelenmemiş bir dizinin bir satır deposu tablosunda oluşturulmuş ikincil bir dizin olmasıdır, ancak kümelenmiş columnstore dizini tablonun tamamı için birincil depolama alanıdır.
Kümelenmemiş dizin, temel alınan tablodaki satır ve sütunların bir kısmının veya tümünün kopyasını içerir. Dizin, tablonun bir veya daha fazla sütunu olarak tanımlanır ve satırları filtreleyen isteğe bağlı bir koşula sahiptir.
Kümelenmemiş sütun deposu dizini, OLTP iş yükünün temel alınan kümelenmiş dizini kullandığı ve analizlerin eşzamanlı olarak çalıştırılan sütun deposu dizininde gerçekleştirildiği gerçek zamanlı operasyonel analizlere olanak tanır. Daha fazla bilgi için bkz. Gerçek zamanlı operasyonel analiz için columnstore kullanmaya başlama.
Toplu mod yürütme
Toplu iş modu yürütme, birden çok satırı birlikte işlemek için kullanılan bir sorgu işleme yöntemidir. Toplu işlem modu yürütme, columnstore (sütun depolama) biçimiyle yakından tümleştirilir ve bu biçim için optimize edilir. Toplu mod yürütme bazen vektör tabanlı veya vektörleştirilmiş yürütme olarak bilinir. Columnstore dizinlerindeki sorgular toplu iş modu yürütmesini kullanır ve bu da sorgu performansını genellikle iki ile dört kez artırır. Daha fazla bilgi için Sorgu işleme mimarisi kılavuzuna bakın.
Neden columnstore dizini kullanmalıyım?
Columnstore dizini, veri ambarı depolama maliyetinizi önemli ölçüde azaltmak için genellikle 10 kat çok yüksek düzeyde veri sıkıştırması sağlayabilir. Analiz için bir sütun deposu dizini, B ağacı dizinine göre kat kat daha iyi performans sunar. Columnstore dizinleri, veri ambarı ve analiz iş yükleri için tercih edilen veri depolama biçimidir. SQL Server 2016'dan (13.x) başlayarak, işletimsel iş yükünüz üzerinde gerçek zamanlı analiz için columnstore dizinlerini kullanabilirsiniz.
Columnstore dizinlerinin bu kadar hızlı olmasının nedenleri:
Sütunlar aynı etki alanındaki değerleri depolar ve genellikle benzer değerlere sahiptir ve bu da yüksek sıkıştırma oranlarıyla sonuçlanır. Sisteminizdeki G/Ç performans sorunları en aza indirilir veya ortadan kalkar ve bellek ayak izi önemli ölçüde azalır.
Yüksek sıkıştırma oranları, daha küçük bir bellek içi ayak izi kullanarak sorgu performansını artırır. Sql Server bellekte daha fazla sorgu ve veri işlemi gerçekleştirebildiğinden sorgu performansı da artabilir.
Toplu yürütme, birden çok satırı birlikte işleyerek sorgu performansını genellikle iki ile dört kez artırır.
Sorgular genellikle bir tablodan yalnızca birkaç sütun seçer ve bu da fiziksel medyadaki toplam G/Ç'yi azaltır.
Columnstore dizinini ne zaman kullanmalıyım?
Önerilen kullanım örnekleri:
Veri ambarı iş yükleri için olgu tablolarını ve büyük boyut tablolarını depolamak için kümelenmiş columnstore dizini kullanın. Bu yöntem sorgu performansını ve veri sıkıştırmasını 10 kata kadar artırır. Daha fazla bilgi için bkz. veri ambarı için columnstore dizinleri.
OLTP iş yükünde gerçek zamanlı analiz gerçekleştirmek için bir kümelenmemiş columnstore dizini kullanın. Daha fazla bilgi için bkz. Gerçek zamanlı operasyonel analiz için columnstore kullanmaya başlama.
Columnstore dizinleri için daha fazla kullanım senaryosu için bkz. gereksinimleriniz için en iyi columnstore dizinini seçme.
Rowstore dizini ile columnstore dizini arasında nasıl seçim yapabilirim?
Rowstore dizinleri, belirli bir değeri ararken veya küçük bir değer aralığındaki sorgular için verileri arayan sorgularda en iyi performansı gösterir. Satır deposu dizinlerini işlem iş yükleriyle birlikte kullanın çünkü genellikle tablo taramaları yerine çoğunlukla tablo aramalarını gerektirirler.
Columnstore dizinleri, özellikle büyük tablolarda büyük miktarda veriyi taraan analiz sorguları için yüksek performans kazancı sağlar. Veri ambarı ve analiz iş yüklerinde, özellikle gerçek tablolarında, columnstore dizinlerini kullanın; çünkü bu iş yükleri, tablo aramaları yerine tam tablo taramalarına ihtiyaç duyma eğilimindedir.
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 satır grubu eleme işlemini iyileştirebilir ve bu da satır gruplarını tamamen atlayarak performans iyileştirmeleri sağlayabilir. Daha fazla bilgi için bkz. Sıralı columnstore dizinleriyle performans ayarlama. Sıralı sütun deposu dizini kullanılabilirliği için bkz. Sıralı sütun dizini kullanılabilirliği.
Satır depolama ve sütun depolamayı aynı tabloda birleştirebilir miyim?
Evet. SQL Server 2016(13.x) sürümünden başlayarak, bir satır deposu tablosunda güncelleştirilebilir bir kümelenmemiş columnstore dizini oluşturabilirsiniz. Columnstore dizini seçili sütunların bir kopyasını depolar, bu nedenle bu veriler için ek alana ihtiyacınız vardır, ancak seçilen veriler ortalama 10 kez sıkıştırılır. Columnstore dizininde analiz çalıştırabilir ve rowstore dizinindeki işlemleri aynı anda çalıştırabilirsiniz. Satır deposu tablosundaki veriler değiştiğinde columnstore güncelleştirilir, bu nedenle her iki dizin de aynı verilerle çalışır.
SQL Server 2016 'den (13.x) başlayarak, bir columnstore dizininde bir veya daha fazla kümelenmemiş satır deposu dizininiz olabilir ve temel alınan columnstore üzerinde verimli tablo aramaları gerçekleştirebilirsiniz. Diğer seçenekler de kullanılabilir duruma gelir. Örneğin, satır deposu tablosunda UNIQUE kısıtlaması kullanarak birincil anahtar kısıtlaması uygulayabilirsiniz. Tekil olmayan bir değer rowstore tablosuna eklenemediğinden, SQL Server değeri columnstore'a ekleyemez.
Sıralı columnstore dizinleri
Verimli segment eleme etkinleştirerek, sıralı columnstore dizinleri sorgu koşuluyla eşleşmeyen büyük miktarlardaki sıralı verileri atlayarak daha hızlı performans sağlar. Verileri sıralı bir columnstore dizinine yüklemek, veri sıralama işlemi nedeniyle sıralı olmayan bir dizine göre daha uzun sürebilir, ancak sıralı columnstore dizinleri ile sorgular daha sonra daha hızlı çalışabilir.
- Sql Veritabanı Altyapısı'nda sıralı columnstore dizinleri ile performans ayarlama veri ambarı iş yükleri hakkında daha fazla bilgi için bkz. Sıralı columnstore dizinleriyle performans ayarlama.
- Hangi tür columnstore dizininin kullanılacağı hakkında daha fazla bilgi için bkz. gereksinimleriniz için en iyi columnstore dizinini seçme.
Sıralı sütun deposu dizini kullanılabilirliği
Sıralı columnstore dizinleri aşağıdaki platformlarda kullanılabilir:
Peron | Sıralı kümelenmiş sütun deposu dizinleri | Sıralı kümelenmemiş columnstore dizinleri |
---|---|---|
Azure SQL Veritabanı | Evet | Evet |
Azure SQL Yönetilen ÖrnekAUTD | Evet | Evet |
Azure SQL Yönetilen Örnek2022 | Evet | Hayır |
Microsoft Fabric'te SQL veritabanı | Evet1 | Evet |
SQL Server 2025 (17.x) Önizlemesi | Evet | Evet |
SQL Server 2022 (16.x) | Evet | Hayır |
Azure Synapse Analytics'te ayrılmış SQL havuzu | Evet | Hayır |
AUTD, Always-up-to-date güncelleştirme ilkesi ile yapılandırılmış Azure SQL Yönetilen Örneği için geçerlidir.
2022, SQL Server 2022 güncelleştirme ilkesi ile yapılandırılan Azure SQL Yönetilen Örneği için geçerlidir.
1Fabric SQL veritabanında, kümelenmiş columnstore dizinlerine sahip tablolar Fabric OneLake'e yansıtılmaz.
Meta veriler
Bir columnstore dizinindeki tüm sütunlar meta verilerde dahil edilen sütunlar olarak depolanır. columnstore dizininde anahtar sütunlar yoktur.
İlgili görevler
Görev | Kaynak makaleler | Notlar |
---|---|---|
Sütun deposu olarak bir tablo oluşturun. | TABLO OLUŞTUR (Transact-SQL) | Varsayılan olarak, bir tablo oluşturduğunuzda, temel alınan veri biçimi olarak rowstore kullanılır. SQL Server 2016(13.x) sürümünden başlayarak, seçeneğini belirterek INDEX ... CLUSTERED COLUMNSTORE kümelenmiş columnstore diziniyle tabloyu oluşturabilirsiniz. Önce bir satır deposu tablosu oluşturmanız ve sonra bunu columnstore'a dönüştürmeniz gerekmez. |
Satır deposu tablosunu sütun deposuna dönüştürme. | CREATE COLUMNSTORE INDEX (Transact-SQL) | Var olan bir yığını veya B ağacını sütun deposuna dönüştürün. Örnekler, var olan dizinlerin nasıl işleneceğini ve bu dönüştürmeyi gerçekleştirirken dizinin adını gösterir. |
Bir satır deposu tablosunda kümelenmemiş bir sütun deposu (columnstore) dizini oluşturun. | KOLON MAĞAZA DİZİNİ OLUŞTUR (Transact-SQL) | Bir satır deposu tablosunda bir tane kümelenmemiş sütun deposu dizini olabilir. SQL Server 2016(13.x) sürümünden başlayarak, kümelenmemiş columnstore dizini filtrelenmiş bir koşula sahip olabilir. Örneklerde temel söz dizimi gösterilmektedir. |
Columnstore tablosunu satır deposuna dönüştür. | CREATE CLUSTERED INDEX (Transact-SQL) veya Columnstore tablosunu bir satır deposu yığınına geri dönüştürme | Genellikle bu dönüştürme gerekli değildir, ancak dönüştürmeniz gereken zamanlar olabilir. Örnekler, bir sütun deposunun yığına veya kümelenmiş bir dizine nasıl dönüştürüleceğini göstermektedir. |
Veri ambarı için columnstore dizinleri oluşturun. | Veri ambarları için Columnstore dizinleri | Hızlı veri ambarı sorguları için columnstore dizinlerinin nasıl kullanılacağını açıklar. |
İşletimsel analiz için dizinler oluşturun. | Gerçek zamanlı operasyonel analiz için columnstore ile çalışmaya başlamanın yolları | OLTP sorgularının B ağacı dizinlerini ve analiz sorgularının columnstore dizinlerini kullanması için tamamlayıcı sütun deposu ve B ağacı dizinlerinin nasıl oluşturulacağını açıklar. |
Bir columnstore dizininde birincil anahtar kısıtlamasını uygulamak için B ağacı dizini kullanın. | Veri ambarları için Columnstore dizinleri | B-tree ve columnstore dizinlerini bir columnstore tablosunda birincil anahtar kısıtlamasını sağlamak için nasıl birleştirebileceğinizi gösterir. |
Columnstore diziniyle bellek için iyileştirilmiş bir tablo oluşturun. | TABLO OLUŞTUR (Transact-SQL) | SQL Server 2016(13.x) sürümünden başlayarak columnstore diziniyle bellek için iyileştirilmiş bir tablo oluşturabilirsiniz. Sütun deposu dizini, tablo oluşturulduktan sonra ALTER TABLE ADD INDEX söz dizimi kullanılarak da eklenebilir. |
Verileri columnstore dizinine yükleyin. | Columnstore dizinlerine veri yükleme | |
Columnstore dizinini kaldırın. | DROP INDEX (Transact-SQL) | Columnstore dizinini bırakmak, B-tree dizinlerinin kullandığı standart DROP INDEX sözdizimini kullanır. Kümelenmiş columnstore dizini kaldırıldığında, columnstore tablosu yığına dönüştürülür. |
Columnstore dizininden bir satırı sil. | SİL (Transact-SQL) | Satırı silmek için DELETE (Transact-SQL) kullanın. columnstore satırı: SQL Server satırı mantıksal olarak silinmiş olarak işaretler, ancak dizin yeniden oluşturulana kadar satırın fiziksel depolama alanını geri kazanmaz. deltastore satırı: SQL Server satırı mantıksal ve fiziksel olarak siler. |
Columnstore dizinindeki bir satırı güncelleştirin. | GÜNCELLEME (Transact-SQL) | Satırı güncelleştirmek için UPDATE (Transact-SQL) kullanın. columnstore satırı: SQL Server satırı mantıksal olarak silinmiş olarak işaretler ve ardından güncelleştirilmiş satırı deltastore'ya ekler. deltastore satırı: SQL Server, deltastore'daki satırı güncelleştirir. |
Columnstore dizinini muhafaza edin. |
ALTER INDEX ... YENİDEN OLUŞTUR Columnstore dizinini reorganize etmek Dizin bakım yöntemleri: yeniden düzenleme ve yeniden oluşturma |
Çoğu durumda, ALTER INDEX ... REORGANIZE benzer ancak daha düşük kaynak tüketimine sahip sonuçlar ALTER INDEX ... REBUILD sağlar.
ALTER INDEX ... REORGANIZE her zaman çevrimiçi çalışır. Her iki seçenek de bir columnstore dizinini birleştirerek gereksiz parçaları temizler ve deltastore'daki satırların columnstore'a aktarılmasını sağlar.SQL Server 2019'dan (15.x) başlayarak, Azure SQL Veritabanı'nda ve Azure SQL Yönetilen Örneği'nde columnstore dizin kalitesi otomatik olarak korunur ve çoğu durumda düzenli dizin bakımı gereksinimi ortadan kaldırılır. |
İlgili içerik
- Columnstore dizinlerindeki yenilikler
- Columnstore dizinleri - Veri yükleme kılavuzu
- Kolon deposu dizinleri - Sorgu performansı
- Gerçek zamanlı operasyonel analiz için Columnstore ile çalışmaya başlama
- Veri ambarında columnstore dizinleri
- Columnstore dizinleri parçalara ayırma
- SQL Server ve Azure SQL dizin mimarisini ve tasarım kılavuzunu
- Columnstore dizin mimarisi
- COLONSTORE İNDEKSİ OLUŞTUR (Transact-SQL)