特別企画
インメモリデータベースを簡単に利用できるSQL Server 2014
(2014/6/18 06:00)
4月に正式リリースとなったSQL Server 2014では、Hekatonというコード名で開発されていたインメモリデータベース機能を搭載している。これにより、データベースにアクセスするプログラムをまったく変更しなくても、SQL Server 2014に置き換えるだけで平均10倍も高速化されるという。インメモリ化はSQL Server 2012でも一部行われていたが、OLTP部分に関してはSQL Server 2014で初めて搭載されたものだ。
本稿では、こうしたSQL Server 2014のインメモリデータベース機能などを説明する。
3つのインメモリ機能を搭載するSQL Server 2014
実はSQL Server 2014は、3つものインメモリ機能を搭載している。
SQL Server 2012で搭載済みのxVelocityは、更新可能なカラムストアインデックスを利用する機能で、表形式のデータキューブなどを高速で変更することが可能になった。BIやBusiness Analytics、データウェアハウス(DWH)などでの利用が高速化される。
2つ目のPowerPivot(開発コード名:Gemini)は、表計算ソフトのExcelの裏側で動作するクライアントサイドのインメモリエンジン。これもSQL Server 2012で搭載済みの機能で、クライアントPCで動作するExcelとバックエンドのデータベースSQL Serverという組み合わせにより、個々のユーザーがExcelを利用して簡単にデータ分析が行えるような仕組みを提供している。
一方で、SQL Server 2014から追加されたHekatonは、OLTP部分をインメモリデータベース化し、性能を向上させているものになる。
Hekatonでは、インメモリに置かれるデータ配置を最適化することで、データアクセスをできるだけインメモリ部分に行うようにしている。これにより、読み込みが多いOLTP操作のパフォーマンスを飛躍的に向上させる。またSQL Server 2014のメモリ最適化列ストアでは、参照だけでなく、データ更新が可能になっているのも特徴という。
さらにインメモリデータベースで問題になってくるのが、データをどのように圧縮して、メモリ上に展開するかということだが、この部分に関してもSQL Server 2014では高い圧縮率を実現している。
例えば、1億100万件のRowテーブルとインデックスが19.7GBになっていても、SQL Server 2014では、ページコンプレッションだけで10.9GBにまで圧縮している。それ以外のインデックスも、圧縮することで大幅にコンパクトになる。こういったデータをメモリに展開することで、高速なOLTP処理を実現している。
なおSQL Server 2014では、T-SQLのフルコンパイル(以前はインタプリタで動作)により処理性能をアップしている。また、並列処理性を上げるためにメニーコアCPUでの動作を基本としており、CPUのインストラクションレベルで排他制御を行ったり(x64プロセッサのCMPXCHG命令を利用)、アプリケーションによるロック、ページラッチ、ページIOラッチ、スピンロックなどのロック機能を利用しないようにしたりしているという。