SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

最新イベントはこちら!

Data Tech 2024

2024年11月21日(木)オンライン開催

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

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

EnterpriseZine編集部が最旬ITトピックの深層に迫る。ここでしか読めない、エンタープライズITの最新トピックをお届けします。

『EnterpriseZine Press』

2024年秋号(EnterpriseZine Press 2024 Autumn)特集「生成AI時代に考える“真のDX人材育成”──『スキル策定』『実践』2つの観点で紐解く」

今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ

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

 前回の記事では 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 圧縮

次のページ
Batch Mode処理:ベクトル処理に基づく新しいクエリ実行テクノロジ

この記事は参考になりましたか?

  • Facebook
  • X
  • Pocket
  • note
今さら聞けないSQL Serverのメモリ最適化テクノロジーと、押さえておきたいSQL Serverのデータベースセキュリティ連載記事一覧

もっと読む

この記事の著者

川野 純(カワノ ジュン)

日本マイクロソフト株式会社
クラウド&ソリューションビジネス統括本部
データプラットフォーム技術部 日本マイクロソフトで SQL Server を中心としたデータプラットフォーム製品群の技術営業を担当しているチームに所属しています。外資系データベースベンダーにてサポートエンジニア、プリセールスエンジニアを経て日本マイクロソフトに入社。お客様の課題解決に繋がるであろう小難しいテクノロジーを、わかりやすく紐解いてお客様にお伝えすることに日々心血を...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/8553 2016/10/19 06:00

Job Board

AD

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング