特別企画

インメモリデータベースを簡単に利用できるSQL Server 2014

 4月に正式リリースとなったSQL Server 2014では、Hekatonというコード名で開発されていたインメモリデータベース機能を搭載している。これにより、データベースにアクセスするプログラムをまったく変更しなくても、SQL Server 2014に置き換えるだけで平均10倍も高速化されるという。インメモリ化はSQL Server 2012でも一部行われていたが、OLTP部分に関してはSQL Server 2014で初めて搭載されたものだ。

 本稿では、こうしたSQL Server 2014のインメモリデータベース機能などを説明する。

SQL Serverは、最新のトレンドをデータベースエンジンに取り込んでいる。特にSQL Server 2008以降は、開発がモジュールごとに行われているため、新しい機能を取り込むことが速くなった
SQL Server 2014は、インメモリ機能によりOLTP処理でも高いパフォーマンスを得ることができるようになった。SQL Server 2014は標準的なx64サーバーとSSDストレージという組み合わせで高い性能が得られる

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で搭載されているインメモリ機能
Hekatonは、サーバーハードウェアの変化を織り込んで、高いパフォーマンスを発揮できるように考えられたデータベースだ
メモリ最適化列ストアではデータ更新が可能になっている。これによりOLTP処理の性能を向上させている
メモリ最適化テーブルを用意することで、インメモリを有効に利用している
2万件のレコードのインサート処理を、HDDからインメモリに変更することで62倍も高速化する
2万件のレコードのアップデート処理は、インメモリにするだけで48倍も高速化する

 さらにインメモリデータベースで問題になってくるのが、データをどのように圧縮して、メモリ上に展開するかということだが、この部分に関してもSQL Server 2014では高い圧縮率を実現している。

 例えば、1億100万件のRowテーブルとインデックスが19.7GBになっていても、SQL Server 2014では、ページコンプレッションだけで10.9GBにまで圧縮している。それ以外のインデックスも、圧縮することで大幅にコンパクトになる。こういったデータをメモリに展開することで、高速なOLTP処理を実現している。

 なおSQL Server 2014では、T-SQLのフルコンパイル(以前はインタプリタで動作)により処理性能をアップしている。また、並列処理性を上げるためにメニーコアCPUでの動作を基本としており、CPUのインストラクションレベルで排他制御を行ったり(x64プロセッサのCMPXCHG命令を利用)、アプリケーションによるロック、ページラッチ、ページIOラッチ、スピンロックなどのロック機能を利用しないようにしたりしているという。

データ圧縮を行うことで、インメモリでも大量のデータが扱えるようになった
Hekatonだけでなく、さまざまなテクノロジーにより性能が向上している。

(山本 雅史)