早いものでSQL Server 2012がリリースされてから数カ月が過ぎました。様々なお客様に採用いただき、技術的な問い合わせを受けることも多くなってきました。そんな日々の中で「おや?」と思うことがあります。SQL Server 2012の新機能のなかでも、とりわけ大きく注目されていた列ストアインデックスのことが、あまり話題に上らないのです。もう一方の目玉であるAlwaysOnは今も注目の的で、様々なお客様で導入が検討されているのと比べると、ちょっとした悲劇のようでもあります。そこで今回は、SQL Serverの進化の過程で、本当に画期的な一歩と呼ぶべき列ストアインデックス(正式名称は「xVelocity メモリ最適化列ストア インデックス」ですが、長いので本稿では省略します)について、日本マイクロソフト プレミアフィールドエンジニア 平山が今一度見つめなおしていきます。
どんな時に列ストアインデックスを使うのか
列ストアインデックスの基本的な情報について以前、「カラムストアインデックスのすべて」の記事で紹介しました。列ストアインデックスの特徴として、処理の向き不向きを解説するなかで「DWH系大規模テーブルでの使用が最も威力を発揮する」ことを伝えています。列ストア型のオブジェクトのターゲットは、まさにそこにあるわけでして、至極当然なことです。
それなのに(ああ、それなのに)、たまに列ストアインデックスの話が出ると「OLTP的に更新ができない」ことが、くつがえすことができない欠点のように語られて、つらい思いをすることがあります。
列ストア型オブジェクトは、従来の行ストア型オブジェクトの利点とは別の観点からDWH系大量処理の速度を向上させています。そのため、行単位でデータを取り出して操作する処理に制約があるのは、ある程度(現時点では)やむを得ないかもしれません。もちろん世の中にはデータを更新できる列ストア型データベース製品もあります。でも、そのような製品であっても、OLTPのようなデータ更新を決して得意としているわけではありません。そのような些末な点よりも、ぜひSQL Server 2012が実装した方式の優れた点に目を向けてみてください。
多くのベンダーは、列ストア型データベース製品と行ストア型データベース製品を別々に出荷しています。いうまでもなく双方を使おうとするとライセンスコスト、開発コストから運用コストまで、別々に必要です。一方でSQL Server 2012では、どちらの形式であっても同じインスタンスで処理できます。つまり、様々な面(コストやアプリケーションの開発利便性など)でメリットがあります。
同じSQL Serverインスタンスの中で、オブジェクトを使い分けることによってOLTPにもDWHにも対応することができるというわけです。そのような利点を享受するためにも、本稿で列ストアインデックスをもっと快適に使うためのいろいろなポイントを紹介します。
この記事は参考になりましたか?
- SQL Server 2012 Deep Dive連載記事一覧
- この記事の著者
-
平山理(ヒラヤマオサム)
日本マイクロソフト株式会社
プレミアフィールドエンジニアリング
プレミアフィールドエンジニア日本マイクロソフトの Premier Field Engineering 部で、お客様に SQL Server をスムーズにお使いいただくための様々なお手伝いをしています。Sybase (現 SAP) 勤務時代の 5 年間とマイクロソフトでの 12 年間、データベース道を極めるために精進する毎日です。
二人の娘の父親で...※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア