まずはSQL Serverの中でインメモリを活用する
システム上で広大なメモリ空間が、比較的安価に利用できるようになった。その結果、データベースベンダー各社はそれを利用して大幅な性能向上を図る、新たな製品や機能の提供を加速している。SQL Server 2012のリリースが迫っているマイクロソフトでは、このインメモリという領域をどう捉えているのだろうか。
日本マイクロソフト サーバープラットフォームビジネス本部 クラウド&アプリケーションプラットフォーム製品部でSQL Server製品を担当しているエグゼクティブプロダクトマネージャの北川 剛氏は「SQL Serverにはインメモリで稼動するカラムストアインデックス機能があります」と語る。専用のインメモリデータベースを用意するのではなく、まずは既存のSQL Serverの中で広大で高速なメモリ空間を活用するというのだ。
SQL Serverのカラムストアインデックスは、基本的にデータウェアハウスやBIのワークロード、つまりは参照系のクエリを対象としたもの。
もともとマイクロソフトが提供してきたBI機能の1つ「PowerPivot VertiPaq」のエンジンをSQL Serverに組み込んで活用している。VertiPaqは、OLAPなど多次元分析を行う際に利用するキューブデータベースと同様なエンジンだ。VertiPaqのキューブを圧縮するロジックを使って、リレーショナルデータベースのカラムデータを圧縮し、そのインデックスをインメモリの上に載せてしまう。このインデックスには、値も一緒に格納されており、それらを利用することで検索処理を極めて高速に行うのだ。
カラムストアインデックスは、SQL Serverのインデックスの1つとして機能する。そのため、利用するのになんら特別な処理は必要としない。
「SQL Serverのコストベース・オプティマイザが自動的に判断し、有効であればカラムストアインデックスを利用します」(北川氏)
これにより、OLAP的な検索が高速に行えるようになるのだが、多次元データベースを別途作るわけではないので特殊なアクセス方法は必要ない。
これは、新たな列指向のインデックスというだけでなく、インデックスがすべてメモリに載ってしまうところがポイントとなる機能だ。インメモリで機能するので、極めて高速な検索ができる。インメモリを活用する機能とはいえ、メモリの管理はSQL Serverが自動で行う。そのため、この機能を使うためにユーザーがメモリ周りの設定などをなんらか意識する必要もない。