Sütun deposu endeksinin anatomisi nedir?


20

Kod adı SQL Server 2012'deki yeni özelliklerden Denalibiri de Columnstore dizinidir.

B-ağaç yapısı, yaprak seviyesi ve b-ağaç sayfaları arasındaki depolamadaki farklılıklar, dahil edilen alanların etkileri, bunları optimize etme, anahtarların sırası vb.Gibi düzenli eski sıra mağaza dizinleri hakkında iyi bir şey biliyorum.

Bir sütun mağaza dizininin hakkında herhangi bir iyi bilgi almakta zorluk yaşıyorum .

  • Nasıl yapılandırılmıştır?
  • B-ağacı var mı? Başka bir yapı var mı?
  • Veriler nasıl düzenlenir?
  • Hangi tür operatörler kullanmak için en uygunudur?
  • Bunları kullanırken kaçınılması gereken başka anti-paternler var mı?

Onlar hakkında bulabildiğim bir çok şey temelde bir "normal" endeksi tam tersidir, yani anahtarların hiçbir sırası, hiçbir dahil alanları, SADECE kümelenmemiş.

Herhangi bir anlayış takdir edilmektedir.


Vikipedi sayfasında sütun deposu veritabanlarının teknik uygulamaları hakkında oldukça fazla fanout var. Ben indeks onun tuşları ile birlikte tek bir sütun için sadece bir sütun mağaza veri yapısı olduğunu hayal. Belki bir bitmap dizini kullanır, belki bir BTree.
ConcernedOfTunbridgeWells

Aslında birden çok sütun için. Ayrıca diğer SS uygulamalarında olduğu gibi diğer ürünlerden biraz farklı olacağını varsayıyorum
JNK

MySQL için ama aynı şey geçerlidir: developer.bazaarvoice.com/why-columns-are-cool Ayrıca Sybase IQ büyük baba
gbn

3
@ConcernedOfTunbridgeWells - Sütun deposu dizinleri bitmap dizinleri kullanıyor mu? Hayır. Sütun deposu dizinleri Vertipaq'a dayalı özel bir veri temsili kullanır. Bir bitmap dizini ile aynı değildir ve bir bitmap dizini kullanmaz. Ancak, bitmap dizinlerine, az sayıda farklı değer içeren bir sütuna filtre uygulamak için gereken süreyi azaltmak gibi bazı benzer faydaları vardır.
Martin Smith

1
Remus Rusanu, Microsoft'ta bu özelliği geliştiren ekibin bir üyesi, şu konuda bir parça yayınladı: SQL Server 2012 COLUMNSTORE Dizinleri
Nick Chammas

Yanıtlar:


22

Columnstore Yapısı

Sütun deposu verileri fiziksel olarak sütun başına bir veya daha fazla segmentte (normal LOB tahsis birimleri) saklanır ve ayrıca olağan şekilde bölünebilir. Her segment kabaca bir milyon sıra yüksek sıkıştırılmış değer veya değer referansı içerir (birkaç sıkıştırma tekniği mevcuttur). Değer başvurusu, en fazla iki karma sözlükten birindeki bir girdiye bağlanır .

Sözlükler, sorgu yürütme sırasında belleğe sabitlenir; yürütme gerçek veri değeri gerektirdiğinde, söz konusu segmentten veri değeri kimlikleri sözlüğe bakılır (performans nedeniyle bu arama mümkün olduğu kadar ertelenir).

Segmentlerde ayrıca segmentte depolanan minimum ve maksimum değerler gibi meta veriler içeren bir başlık kaydı bulunur. Başlığından bilgiler sıklıkla kullanılabilir ortadan yürütülmesi sırasında işleme komple bölümleri. Üstbilgi kayıt bilgileri olağan LOB veri kök yapısında saklanır, bu nedenle bir segmentin kaldırılması, Depolama Motorunun LOB veri sayfalarını fiziksel depolamadan tamamen atlayabileceği anlamına gelir. Eliminasyon potansiyelini en üst düzeye çıkarmak, Columnstore dizininin oluşturulduğu sırada kümelenmiş dizin sırasına bağımlılık da dahil olmak üzere dikkatli bir tasarım gerektirebilir .

Özel Plan Operatörleri

SQL Server 2012, Toplu İş Modu adlı yeni bir yürütme modu sunar. Bu modda, operatörler arasında kabaca 1000 satırlık paketler geçirilir ve işlemci kullanım verimliliğini önemli ölçüde artırır. Her paket içinde, sütun verileri bir vektör olarak temsil edilir. Tüm plan operatörleri toplu mod çalışmasını desteklemez, ancak Columnstore Dizin Tarama, Karma İç Bağlantı, Toplu Karma Tablo Oluşturma, Bitmap Filtresi, Karma Toplama ( skaler agrega değil ), Filtre ve Hesaplama Skaleri (projeksiyon ve ifade için) değerlendirme). Sorgu yürütme planları, tahmini ve gerçek yürütme modunu gösterecek şekilde geliştirilmiştir.

Anti-Patterns

İlk sürümde, izin verilen veri türleri üzerindeki kısıtlamalar da dahil olmak üzere çok sayıda kısıtlama vardır . En yaygın türler desteklenir; desteklenmeyen veri tipleri arasında DECIMAL18 basamak, daha hassas bir daha sonra ile (N)VARCHAR(MAX), UNIQUEIDENTIFIERCLR türleri ve (VAR)BINARY.

Kullanımı dize türleri , OUTER JOIN, IN,EXISTS , NOT IN, OR, UNION ALLçözümler, bu bölümde bağlantılı makale de gösterildiği gibi, tipik olarak alışılmadık sözdizimi yeniden yazar içerdiğini kullanılmadığı takdirde, önemli ölçüde düşük performans (Sıra modu uygulama) neden olabilir.

Daha fazla bilgi

Remus Rusanu burada harika bir genel bakış yayınladı .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.