Columnstore dizinleri - Tasarım kılavuzu
Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnalytics Platform Sistemi (PDW)Microsoft Fabric'te SQL Veritabanı
Columnstore dizinlerini tasarlamaya yönelik üst düzey öneriler. Birkaç iyi tasarım kararı, columnstore dizinlerinin sağlamak üzere tasarlandığı yüksek veri sıkıştırma ve sorgu performansına ulaşmanıza yardımcı olur.
Önkoşullar
Bu makalede columnstore mimarisi ve terminolojisi hakkında bilgi sahibi olduğunuz varsayılır. Daha fazla bilgi için bkz. Columnstore dizinleri: Genel Bakış ve Columnstore Dizin Mimarisi.
Veri gereksinimlerinizi öğrenme
Columnstore dizini tasarlamadan önce, veri gereksinimleriniz hakkında mümkün olduğunca çok bilgi edin. Örneğin, şu soruların yanıtlarını düşünün:
- Tablom ne kadar büyük?
- Sorgularım çoğunlukla büyük değer aralıklarını tarayan analizler gerçekleştiriyor mu? Columnstore dizinleri, belirli değerleri aramak yerine büyük aralıklı taramalar için iyi çalışacak şekilde tasarlanmıştır.
- İş yüküm çok fazla güncelleştirme ve silme işlemi gerçekleştiriyor mu? Veriler kararlı olduğunda Columnstore dizinleri iyi çalışır. Sorgular, satırların %10%'dan daha azını güncellemeli ve silmeli.
- Veri ambarı için olgu ve boyut tablolarım var mı?
- İşlem iş yükünde analiz gerçekleştirmem gerekiyor mu? Öyleyse, gerçek zamanlı operasyonel analiz için columnstore tasarım kılavuzuna bakın.
Columnstore dizinine ihtiyacınız olmayabilir. Yığınlara veya kümelenmiş dizinlere sahip satır deposu (veya B ağacı) tabloları, verileri arayan, belirli bir değeri arayan veya küçük bir değer aralığındaki sorgular için en iyi performansı gösterir. Büyük aralıklı tablo taramaları yerine çoğunlukla tablo aramaları gerektirme eğiliminde olduklarından, işlem iş yükleriyle rowstore dizinlerini kullanın.
gereksinimleriniz için en iyi columnstore dizinini seçin
Columnstore dizini kümelenmiş veya kümelenmemiş olabilir. Kümelenmiş columnstore dizininde bir veya daha fazla kümelenmemiş B ağacı dizini olabilir. Columnstore dizinlerini denemek kolaydır. Eğer bir tabloyu bir columnstore dizini olarak oluşturursanız, columnstore dizinini kaldırarak tabloyu kolayca bir rowstore tablosuna dönüştürebilirsiniz.
Seçenekler ve önerilerin özeti aşağıdadır.
Columnstore seçeneği | Ne zaman kullanılacağına ilişkin öneriler | Sıkıştırma |
---|---|---|
Kümelenmiş sütun deposu (columnstore) dizini |
Aşağıdakiler için kullanın: 1) Yıldız veya kar tanesi şeması ile geleneksel veri ambarı iş yükü 2) Çok az güncelleştirme ve silme işlemiyle büyük hacimli veriler ekleyen Nesnelerin İnterneti (IOT) iş yükleri. |
Ortalama 10x |
Sıralı kümelenmiş sütun deposu dizini | Kümelenmiş columnstore dizini tek bir sıralı koşul sütunu veya sütun kümesi aracılığıyla sorgulandığında kullanın. Bu rehber, sıkıştırılmış temel satır grupları farklı davransa bile, satır deposu kümelenmiş dizin için anahtar sütun veya sütunları seçmeye benzer. Daha fazla bilgi için bkz. CREATE COLUMNSTORE INDEX ve sıralı kümelenmiş columnstore dizinleriyle performans iyileştirme. | Ortalama 10x |
Kümelenmiş columnstore dizini kümelenmemiş B ağacı dizinlerini |
Kullanım amacı: 1. Kümelenmiş columnstore dizininde birincil anahtar ve yabancı anahtar kısıtlamalarını zorunlu tutun. 2. Belirli değerleri veya küçük değer aralıklarını arayan sorguları hızlandırın. 3. Belirli satırların güncelleştirmelerini ve silmelerini hızlandırın. |
Ortalama 10 kat artı NCI'ler için biraz ek depolama alanı. |
Disk tabanlı yığın veya B-ağacı dizininde kümelenmemiş columnstore dizini | Aşağıdakiler için kullanın: 1) Bazı analiz sorguları olan bir OLTP iş yükü. Analiz için oluşturulan B ağacı dizinlerini bırakabilir ve bunları bir kümelenmemiş columnstore diziniyle değiştirebilirsiniz. 2) Verileri ayrı bir veri ambarı'na taşımak için Ayıklama Dönüştürme ve Yükleme (ETL) işlemleri gerçekleştiren birçok geleneksel OLTP iş yükü. OLTP tablolarından bazılarında bir kümelenmemiş columnstore dizini oluşturarak ETL'yi ve ayrı bir veri ambarını ortadan kaldırabilirsiniz. |
NCCI, ortalama olarak 10% daha fazla depolama alanı gerektiren ek bir dizindir. |
Bellek içi tablo üzerinde columnstore dizini |
Disk tabanlı bir tablodaki kümelenmemiş columnstore dizini için öneriler, temel tablonun bellek içi bir tablo olması haricinde aynıdır. | Columnstore dizini ek bir dizindir. |
Büyük veri ambarı tabloları için kümelenmiş columnstore dizini kullanma
Kümelenmiş columnstore dizini bir dizinden daha fazlasıdır, birincil tablo depolama alanıdır. Yüksek veri sıkıştırma ve büyük veri ambarı olgu ve boyut tablolarında sorgu performansında önemli bir gelişme sağlar. Kümelenmiş columnstore dizinleri işlem sorguları yerine analiz sorguları için en uygundur çünkü analiz sorguları belirli değerleri aramak yerine çok çeşitli değerlerde işlem gerçekleştirme eğilimindedir.
Aşağıdaki durumlarda kümelenmiş columnstore dizini kullanmayı göz önünde bulundurun:
- Her bölümün en az bir milyon satırı vardır. Columnstore dizinlerinin her bölümde satır grupları vardır. Tablo her bölüm içindeki bir satır grubunu dolduramayacak kadar küçükse columnstore sıkıştırma ve sorgu performansı avantajlarından yararlanamazsınız.
- Sorgular öncelikli olarak değer aralıklarında analiz gerçekleştirir. Örneğin, bir sütunun ortalama değerini bulmak için sorgunun tüm sütun değerlerini taraması gerekir. Ardından, ortalamayı belirlemek için değerleri toplayarak bir araya getirir.
- Eklemelerin çoğu, çok az güncelleştirme ve silme işlemiyle büyük hacimli verilerde yer alır. Nesnelerin İnterneti (IOT) gibi birçok iş yükü, çok az güncelleştirme ve silme işlemiyle büyük miktarlarda veri ekler. Bu iş yükleri, kümelenmiş columnstore dizini kullanılarak elde edilen sıkıştırma ve sorgu performansı kazançlarından yararlanabilir.
Aşağıdaki durumlarda kümelenmiş columnstore dizini kullanmayın:
- Tabloda varchar(max), nvarchar(max)veya varbinary(max) veri türleri gerekir. Ya da columnstore dizinini bu sütunları içermeyecek şekilde tasarlayın (Şunun için geçerlidir: SQL Server 2016 (13.x) ve önceki sürümler).
- Tablo verileri kalıcı değildir. Verileri hızla depolamanız ve silmeniz gerektiğinde yığın veya geçici tablo kullanmayı göz önünde bulundurun.
- Tabloda bölüm başına bir milyondan az satır vardır.
- Tablodaki işlemlerin 10'dan fazla% güncelleştirme ve silme işlemleridir. Çok sayıda güncelleştirme ve silme işlemi parçalanmalara neden olur. Parçalanma, tüm verileri columnstore'a zorlayan ve parçalanmayı kaldıran reorganize adlı bir işlem çalıştırana kadar sıkıştırma hızlarını ve sorgu performansını etkiler. Daha fazla bilgi için bkz. Columnstore dizininde dizin parçalanmasını en aza indirme.
Daha fazla bilgi için, veri ambarında Columnstore dizinleribölümüne bakın.
Büyük veri ambarı tabloları için düzenli kümeli columnstore indeksi kullanın
Columnstore dizinlerinin erişilebilirliği için bkz. Columnstore dizinleri: Genel Bakış.
Aşağıdaki senaryolarda sıralı kümelenmiş columnstore dizini kullanmayı göz önünde bulundurun:
- Veriler görece statik olduğunda (sık yazma ve silme işlemleri olmadan) ve sıralı kümelenmiş columnstore dizin anahtarı statik olduğunda, sıralı kümelenmiş columnstore dizinleri analitik iş yükleri için sıralı olmayan kümelenmiş columnstore dizinlerine veya rowstore kümelenmiş dizinlerine göre önemli performans avantajları sağlayabilir.
- Sıralı kümelenmiş columnstore dizin anahtarının ilk sütununda ne kadar farklı değerler olursa, sıralı kümelenmiş columnstore dizinleri için performans artışı o kadar iyi olabilir. Bunun nedeni, dize verileri için iyileştirilmiş segment elemedir. Daha fazla bilgi için bkz. bölüm eleme.
- Sık sorgulanacak ve özellikle anahtarın ilk sütunu olmak üzere segment elemesinden yararlanabilecek sıralı bir kümelenmiş columnstore dizin anahtarı seçin. Tablodaki diğer sütunlarda segment eleme nedeniyle elde edilecek performans artışı daha az tahmin edilebilir olacaktır.
- Sadece en son analiz verilerinin sorgulanması gereken durumlarda, örneğin son 15 saniyelik veriler kullanıldığında, sıralı kümelenmiş columnstore dizinleri eski veriler için segment eleme sağlayabilir. Sıralı kümelenmiş columnstore verilerinin anahtarındaki ilk sütun, eklenen veya oluşturulan tarih/saat gibi tarih/saat verileri olmalıdır. Segment eleme, sıralı kümelenmiş columnstore dizininde, sıralanmamış kümelenmiş columnstore dizinine göre daha etkili olabilir.
- GUID verileri içeren anahtarlar bulunan tablolarda sıralı kümelenmiş columnstore dizinlerini düşünün. Burada uniqueidentifier veri türü artık segment elemeiçin kullanılabilir.
Sıralı kümelenmiş columnstore dizini şu senaryolarda o kadar etkili olmayabilir:
- Diğer columnstore dizinlerine benzer şekilde, yüksek oranda ekleme etkinliği aşırı depolama G/Ç'sine neden olabilir.
- Yazma işlemlerinin yoğun olduğu iş yüklerinde, küme taşıyıcısı tarafından yapılan satır grubu bakımı nedeniyle segment azaltma kalitesi zamanla düşecektir. BU durum, ALTER INDEX REORGANIZE ile columnstore dizininin düzenli bakımıyla azaltılabilir.
Verimli tablo aramaları için B-ağacı kümelenmemiş dizinler ekleyin
SQL Server 2016(13.x) sürümünden başlayarak kümelenmiş bir columnstore dizininde ikincil dizinler olarak kümelenmemiş B ağacı veya satır deposu dizinleri oluşturabilirsiniz. Sütun deposu dizininde değişiklikler gerçekleştiğinde, kümelenmemiş B ağacı dizini güncelleştirilir. Bu, avantajınıza kullanabileceğiniz güçlü bir özelliktir.
İkincil B ağacı dizinini kullanarak, tüm satırları taramadan belirli satırları verimli bir şekilde arayabilirsiniz. Diğer seçenekler de kullanılabilir duruma gelir. Örneğin, B ağacı dizininde benzersiz kısıtlaması kullanarak birincil veya yabancı anahtar kısıtlaması uygulayabilirsiniz. Benzersiz olmayan bir değer B ağacı dizinine eklenemeyeceğinden, SQL Server değeri columnstore'a ekleyemez.
Aşağıdakiler için columnstore dizininde B ağacı dizini kullanmayı göz önünde bulundurun:
- Belirli değerleri veya küçük değer aralıklarını arayan sorgular çalıştırın.
- Birincil anahtar veya yabancı anahtar kısıtlaması gibi bir kısıtlamayı zorunlu tutun.
- Güncelleştirme ve silme işlemlerini verimli bir şekilde gerçekleştirin. B ağacı dizini, bir tablonun tam tablosunu veya bölümünü taramadan güncelleştirmeler ve silmeler için belirli satırları hızla bulabilir.
- B ağacı dizinini depolamak için ek depolama alanınız var.
Gerçek zamanlı analiz için kümelenmemiş columnstore dizini kullanma
SQL Server 2016(13.x) sürümünden başlayarak, satır deposu disk tabanlı bir tabloda veya bellek içi OLTP tablosunda kümelenmemiş bir columnstore dizininiz olabilir. Bu işlem tablosunda analizi gerçek zamanlı olarak çalıştırmayı mümkün kılar. Temel tabelada işlemler devam ederken columnstore dizininde analiz yapabilirsiniz. Bir tablo her iki dizini de yönettiğinden, değişiklikler hem satır deposu hem de columnstore dizinlerinde gerçek zamanlı olarak kullanılabilir.
Bir columnstore dizini, rowstore dizinine göre 10 kat daha iyi veri sıkıştırması elde ettiğinden, yalnızca az miktarda ek depolamaya ihtiyaç duyar. Örneğin, sıkıştırılmış satır deposu tablosu 20 GB alıyorsa, columnstore dizini ek 2 GB gerektirebilir. Gereken ek alan, kümelenmemiş columnstore dizinindeki sütun sayısına da bağlıdır.
Aşağıdakiler için kümelenmemiş columnstore dizini kullanmayı göz önünde bulundurun:
İşlemsel satır deposu tablosunda analizi gerçek zamanlı olarak çalıştırın. Analiz için tasarlanmış mevcut B ağacı dizinlerini, kümelenmemiş bir columnstore diziniyle değiştirebilirsiniz.
Ayrı bir veri ambarı gereksinimini ortadan kaldırın. Geleneksel olarak şirketler işlemleri bir satır deposu tablosunda çalıştırır ve sonra analiz çalıştırmak için verileri ayrı bir veri ambarı içine yükler. Birçok iş yükü için işlem tablolarında bir kümelenmemiş columnstore dizini oluşturarak yükleme işlemini ve ayrı veri ambarını ortadan kaldırabilirsiniz.
SQL Server 2016 (13.x), bu senaryo için çeşitli stratejiler sunar. OLTP uygulamanızda değişiklik olmadan bir kümelenmemiş columnstore dizinini etkinleştirebildiğiniz için bunu denemek çok kolaydır.
Ek işlem kaynakları eklemek için, analizi okunabilir bir ikincil kaynak üzerinde çalıştırabilirsiniz. Okunabilir bir ikincil kullanmak, işlem iş yükünün ve analiz iş yükünün işlenmesini birbirinden ayırır.
Daha fazla bilgi için bkz. Gerçek zamanlı operasyonel analiz için Columnstore kullanmaya başlama
En iyi columnstore dizinini seçme hakkında daha fazla bilgi için Sunil Agarwal'ın blogu Hangi columnstore dizini iş yüküm için uygun?.
Veri yönetimi ve sorgu performansı için tablo bölümlerini kullanma
Columnstore dizinleri, verileri yönetmek ve arşivlemenin iyi bir yolu olan bölümlendirmeyi destekler. Bölümleme, işlemleri bir veya daha fazla bölümle sınırlayarak sorgu performansını da artırır.
Verilerin yönetilmesini kolaylaştırmak için bölümleri kullanma
Büyük tablolar için veri aralıklarını yönetmenin tek pratik yolu bölümleri kullanmaktır. Satır deposu tabloları için bölümlerin avantajları columnstore dizinleri için de geçerlidir.
Örneğin, hem rowstore hem de columnstore tablolarında bölmeler kullanılır:
- Artımlı yedeklemelerin boyutunu denetleyin. Bölümleri yedekleyerek dosya gruplarını ayırabilir ve sonra bunları salt okunur olarak işaretleyebilirsiniz. Bunu yaptığınızda, gelecekteki yedeklemeler salt okunur dosya gruplarını atlar.
- Eski bir bölümü daha düşük maliyetli bir depolama alanına taşıyarak depolama maliyetlerinden tasarruf edin. Örneğin, bir bölümü daha ucuz bir depolama konumuna taşımak için bölüm değiştirme özelliğini kullanabilirsiniz.
- İşlemleri bir bölümle sınırlayarak işlemleri verimli bir şekilde gerçekleştirin. Örneğin, dizin bakımı için yalnızca parçalanmış bölümleri hedefleyebilirsiniz.
Ayrıca columnstore diziniyle bölümleme özelliğini kullanarak şunları da kullanabilirsiniz:
- Depolama maliyetlerinde 30% daha tasarruf edin. Eski bölümleri
COLUMNSTORE_ARCHIVE
sıkıştırma seçenekleriyle sıkıştırabilirsiniz. Sorgu performansı açısından veriler daha yavaş olacaktır; bu, bölüm seyrek sorgulanıyorsa kabul edilebilir bir durumdur.
Sorgu performansını geliştirmek için bölümleri kullanma
Bölümleri kullanarak sorgularınızı yalnızca belirli bölümleri tarar ve bu da taranacak satır sayısını sınırlar. Örneğin, dizin yıla göre bölümlenmişse ve sorgu geçen yılın verilerini analiz ediyorsa, yalnızca bir bölümdeki verileri taraması gerekir.
Columnstore dizini için daha az bölüm kullanma
Yeterince büyük bir veri boyutunuz olmadığı sürece, columnstore dizini, satır deposu dizini için kullanabileceğiniz bölümlerden daha az bölümle en iyi performansı gösterir. Bölüm başına en az bir milyon satırınız yoksa, satırlarınızın çoğu columnstore sıkıştırmasının performans avantajını almadıkları deltastore'ya gidebilir. Örneğin, 10 bölümü olan bir tabloya bir milyon satır yüklerseniz ve her bölüm 100.000 satır alırsa, tüm satırlar delta satır gruplarına gider.
Örnek:
- Bir bölüme veya bölümlenmemiş bir tabloya 1.000.000 satır yükleyin. 1.000.000 satır içeren sıkıştırılmış bir satır grubu elde edersiniz. Bu, yüksek veri sıkıştırma ve hızlı sorgu performansı için mükemmeldir.
- 1.000.000 satırı 10 bölüme eşit olarak yükleyin. Her bölüm 100.000 satır alır ve bu, columnstore sıkıştırmasının minimum eşiğinden daha düşüktür. Sonuç olarak columnstore dizininde her birinde 100.000 satır bulunan 10 delta satır grubu olabilir. Delta satır gruplarını bir sütun deposuna (columnstore) zorla yerleştirmenin yolları vardır. Ancak columnstore dizinindeki tek satırlar bunlarsa, sıkıştırılmış satır grupları en iyi sıkıştırma ve sorgu performansı için çok küçük olacaktır.
Bölümleme hakkında daha fazla bilgi için bkz. Sunil Agarwal'ın blog gönderisi, Columnstore dizinimi bölümlemeli miyim?.
Uygun veri sıkıştırma yöntemini seçin
columnstore dizini, veri sıkıştırma için iki seçenek sunar: columnstore sıkıştırma ve arşiv sıkıştırma. Dizini oluştururken sıkıştırma seçeneğini belirleyebilir veya daha sonra ALTER INDEX ... KOMUTUYLAYENIDEN OLUŞTURARAK değiştirebilirsiniz.
En iyi sorgu performansı için columnstore sıkıştırmasını kullanma
Columnstore sıkıştırması genellikle rowstore dizinlerine göre 10 kat daha iyi sıkıştırma hızları elde eder. Columnstore dizinleri için standart sıkıştırma yöntemidir ve hızlı sorgu performansı sağlar.
En iyi veri sıkıştırması için arşiv sıkıştırmayı kullanma
Arşiv sıkıştırma, sorgu performansı o kadar önemli olmadığında en yüksek sıkıştırma için tasarlanmıştır. Columnstore sıkıştırmasından daha yüksek veri sıkıştırma oranları elde eder, ancak bunun bir fiyatı vardır. Verilerin sıkıştırılması ve açılması daha uzun zaman alır, bu nedenle hızlı sorgulama performansı için uygun değildir.
Satır deposu tablosunu columnstore dizinine dönüştürürken iyileştirmeleri kullanma
Verileriniz zaten bir satır deposu tablosundaysa, CREATE COLUMNSTORE INDEX kullanarak tabloyu kümelenmiş columnstore dizinine dönüştürebilirsiniz. Tablo dönüştürüldükten sonra sorgu performansını geliştirecek birkaç iyileştirme vardır.
Satır grubu kalitesini geliştirmek için MAXDOP kullanma
Bir yığın veya kümelenmiş B ağacı dizinini bir columnstore dizinine dönüştürmek için kullanılabilecek en fazla işlemci sayısını yapılandırabilirsiniz. İşlemcileri yapılandırmak için en yüksek paralellik derecesini (MAXDOP) kullanın.
Büyük miktarda veriniz varsa MAXDOP 1
büyük olasılıkla çok yavaş olacaktır. MAXDOP'i 4
'a çıkarmak sorunsuz çalışıyor. Bu, en iyi satır sayısına sahip olmayan birkaç satır grubuyla sonuçlanırsa, arka planda birleştirmek için ALTER INDEX REORGANIZE
B ağacı dizininin sıralı düzenini koru
B ağacı dizini satırları zaten sıralı bir düzende depoladığından, satırlar columnstore dizinine sıkıştırıldığında bu düzenin korunması sorgu performansını artırabilir.
Columnstore dizini verileri sıralamaz, ancak meta verileri kullanarak her satır grubundaki her sütun kesiminin en düşük ve en yüksek değerlerini izler. Bir değer aralığını tararken, satır grubunun ne zaman atlanmış olduğunu hızlı bir şekilde hesaplayabilir. Veriler sıralandığında daha fazla satır grubu atlanabilir.
Dönüştürme sırasında sıralanmış düzeni korumak için:
CREATE COLUMNSTORE INDEX deyimini, DROP_EXISTING yan tümcesiyle birlikte kullanın. Bu da dizinin adını korur. Satır deposu dizininin adını zaten kullanan betikleriniz varsa bunları güncelleştirmeniz gerekmez.
Bu örnek,
MyFactTable
adlı bir tablodaki kümelenmiş rowstore dizinini kümelenmiş columnstore dizinine dönüştürür.ClusteredIndex_d473567f7ea04d7aafcac5364c241e09
dizin adı aynı kalır.CREATE CLUSTERED COLUMNSTORE INDEX ClusteredIndex_d473567f7ea04d7aafcac5364c241e09 ON MyFactTable WITH (DROP_EXISTING = ON);
Segment eliminasyonunu anlamayı
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. Veri türü seçimleri, columnstore dizinindeki sorgular için sorgu performansı tabanlı ortak filtre koşullarını önemli ölçüde etkileyebilir. Daha fazla bilgi için bkz. segmentin kaldırılması.
İlgili Görevler
Bunlar, columnstore dizinlerini oluşturmaya ve sürdürmeye yönelik görevlerdir.
Görev | Referans makaleleri | Notlar |
---|---|---|
Sütun deposu olarak bir tablo oluşturun. | TABLO OLUŞTUR (Transact-SQL) | SQL Server 2016(13.x) sürümünden başlayarak, tabloyu kümelenmiş columnstore dizini olarak oluşturabilirsiniz. Önce bir satır deposu tablosu oluşturmanız ve sonra bunu columnstore'a dönüştürmeniz gerekmez. |
Columnstore diziniyle bir bellek tablosu oluşturun. | CREATE TABLE (Transact-SQL) | SQL Server 2016(13.x) sürümünden başlayarak columnstore diziniyle bellek için iyileştirilmiş bir tablo oluşturabilirsiniz. Columnstore dizini, tablo oluşturulduktan sonra ALTER TABLE ADD INDEX söz dizimi kullanılarak da eklenebilir. |
Satır deposu tablosunu columnstore'a 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. |
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. Örneklerde columnstore'un yığına veya kümelenmiş dizine nasıl dönüştürüldüğü gösterilmektedir. |
Satır deposu tablosunda bir kolon deposu dizini oluşturun. | KOLON MAĞAZA İNDEKS OLUŞTUR (Transact-SQL) | Bir satır deposu tablosunda bir sütun deposu dizini bulunabilir. SQL Server 2016 (13.x) sürümünden başlayarak columnstore dizini filtrelenmiş bir koşula sahip olabilir. Örneklerde temel söz dizimi gösterilmektedir. |
operasyonel analiz için performanslı dizinler oluşturun. | Gerçek zamanlı operasyonel analiz için Columnstore ile çalışmaya başlama | 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. |
Veri ambarı için performanslı columnstore dizinleri oluşturun. | Veri ambarında columnstore dizinleri | Yüksek performanslı veri ambarı sorguları oluşturmak için columnstore tablolarında B ağacı dizinlerinin nasıl kullanılacağını açıklar. |
Bir columnstore dizininde birincil anahtar kısıtlamasını zorlamak için B ağacı dizini kullanın. | Veri ambarında columnstore dizinleri |
B-tree ve columnstore dizinlerini birleştirerek columnstore dizini üzerinde birincil anahtar kısıtlamalarını uygulamayı gösterir. |
Columnstore dizinini bırakma | DROP INDEX (Transact-SQL) | Columnstore dizinini bırakmak, B ağacı dizinlerinin kullandığı standart DROP INDEX söz dizimini kullanır. Kümelenmiş bir columnstore dizini kaldırıldığında, columnstore tablosu bir yığın haline dönüştürülür. |
Bir satırı columnstore dizininden 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ştirme | 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. |
Deltastore'daki tüm satırların columnstore'a taşınmasını zorlar. |
İNDEX DEĞİŞİM (Transact-SQL) ... yeniden oluştur Sorgu performansını geliştirmek ve kaynak tüketimini azaltmak için dizin bakımını iyileştirme |
ALTER INDEX ile REBUILD seçeneği, tüm satırları columnstore'a gitmeye zorlar. |
Columnstore dizinini birleştirme işlemi yapma | ALTER INDEX (Transact-SQL) |
ALTER INDEX ... REORGANIZE , columnstore dizinlerini çevrimiçi olarak birleştirir. |
Tabloları columnstore dizinleriyle birleştirin. | MERGE (Transact-SQL) |
İlgili içerik
Boş bir columnstore dizini oluşturmak için:
- SQL Server veya SQL Veritabanı, CREATE TABLE (Transact-SQL)bölümüne başvurun.
- Azure Synapse Analytics, CREATE TABLE (Azure Synapse Analytics)bölümüne bakın.
Mevcut bir satır deposu yığınını veya B ağacı dizinini kümelenmiş columnstore dizinine dönüştürme veya kümelenmemiş bir columnstore dizini oluşturma hakkında daha fazla bilgi için CREATE COLUMNSTORE INDEX (Transact-SQL)bakın.