Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

今さら聞けない列ストアインデックスの仕組みと進化・活用シーン(前編)

2016/10/19 06:00

 前回の記事では SQL Server のメモリ最適化OLTP エンジンについてご紹介しました。今回は SQL Server における分析ワークロードを高速化する列ストアインデックスについてご紹介します。列ストアインデックスでは、SQL Server のメモリ最適化テクノロジの一つであるxVelocity メモリ最適化列ストアインデックスの技術が利用されています。本記事の前編では、xVelocityメモリ最適化列ストアインデックスでのデータ圧縮およびBatch Mode処理の動作をご紹介し、後編ではSQL Server における列ストアインデックスの実装がどのように進化してきているかをご紹介します。

xVelocityとSQL Server における列ストア インデックスの実装

 SQL Server データベース エンジンの列指向オブジェクトである列ストア インデックス (※1) は SQL Server 2012 で初めて導入されました。

 列ストア インデックスはマイクロソフトのメモリ最適化データ管理テクノロジである xVelocity (※2) を使用したメモリ最適化列ストア インデックスで、最新の圧縮アルゴリズムだけでなく、xVelocity により導入された「Batch Mode処理」と呼ばれるベクトルに基づく新しいクエリ実行テクノロジが、列ストア インデックスと組み合わされることで、クエリ処理が劇的に高速化されます。xVelocity は PowerPivot for Excel 2010、PowerPivot for SharePoint 2010 と共に SQL Server 2008 R2 で初めて導入されたテクノロジー(当時の呼称は VertiPaq)で、現在では SQL Server Analysis Services 表形式モードでも採用されています。

 ※1 カラムストアインデックスのすべて(前編)

 ※2 SQL Server 2012 での xVelocity

xVelocity メモリ最適化列ストアインデックスにおけるデータ圧縮

 行ストアデータが列ストア圧縮されるまでの大まかな流れを下図に示します。

図x:列ストア圧縮の流れ
図1:列ストア圧縮の流れ

フェーズⅠ:データの読込・分割

 ヒープ、クラスター化インデックス等の行ストアのデータは行グループ単位(1行グループ当たりの最大行数は 1,048,576 行)に分割され、さらに列セグメントに分割されます。

フェーズⅡ:Encoding(符号化)

 各列セグメントのデータを符号化して整数ベクトルへ変換します。整数ベクトル化することで復号化せずに直接集計処理できるようにします。列のデータ型やカーディナリティから符号化の方法を以下の2つから選択します。

 辞書ベースの符号化(Dictionary Encoding)
  •  値を整数値で表現するために定性的な属性をDictionary に抽出します。
  •  文字列型やカーディナリティの低い数値型に適しています
図x:辞書ベースの符号化
図2:辞書ベースの符号化
 値ベースの符号化(Value Encoding)
  •  Numericの場合、最も小さい正の指数を選択(指数ベースの符号化)し、基数ベースの符号化を行います
  •  Integerの場合、最も小さい負の指数を選択(指数ベースの符号化)し、基数ベースの符号化を行います
図3:値ベースの符号化
図x:値ベースの符号化

 

フェーズⅢ:Compression(圧縮)

 さらに列セグメントを以下の2つから圧縮アルゴリズムを選択して圧縮を実行します。整数ベクトルのまま圧縮することで復号化せずに直接集計処理をすることができます。

 Bit Packing 圧縮
  •  ビット演算処理を施して、より少ないビット数でデータを表現する圧縮方式です。
図x:Bit Packing 圧縮
図4:Bit Packing 圧縮
 Run Length Encoding 圧縮

 (値, 繰り返し回数) のペアで値を格納する圧縮方式です。連続する値が多い場合、非常に高い圧縮率を実現できます。

図x:Run Length Encoding 圧縮
図5:Run Length Encoding 圧縮

※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 川野 純(カワノ ジュン)

    日本マイクロソフト株式会社 クラウド&ソリューションビジネス統括本部 データプラットフォーム技術部  日本マイクロソフトで SQL Server を中心としたデータプラットフォーム製品群の技術営業を担当しているチームに所属しています。外資系データベースベンダーにてサポートエンジニア、プ...

バックナンバー

連載:今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ
All contents copyright © 2007-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5