米Microsoftが4月にリリースした最新のDBMS製品「Microsoft SQL Server 2014」。OLTP(オンライントランザクション処理)向けに高速処理が可能なインメモリーDBエンジンを新規開発して搭載したことが目玉となっている。高速化を実現する仕組みを探った。
米Microsoftが2014年4月にリリースした最新のDBMS製品「Microsoft SQL Server 2014」(以下、SQL Server 2014と表記)。新機能のうち、最大の目玉となるのは、OLTPの大幅な性能向上を狙った「インメモリー機能」を搭載したことだ 注1。
OLTP向けインメモリー機能は、「Hekaton(ヘカトン)」と呼ぶDBエンジンで実現している(図1)。インメモリー機能は、主記憶装置上にデータを置いて処理し、ディスクI/Oを伴わないで済むもの。トランザクションログを定期的にディスクに書き出す処理は必要で、書き出すタイミングの設定によって性能とデータ一貫性とのトレードオフが生じる。トランザクションログの書き込みは、(1)永続化しない、(2)完全永続化(トランザクションログを都度書き込む)、(3)遅延永続化(ある程度バッファーにためて書き込む)の3段階で設定できる。
既存アプリの改修なしで利用可能
Hekatonは、SQL Server 2014の内部に従来のDBエンジンと並存している。だが、従来通りT-SQL(Transact-SQL、独自拡張したSQL言語)を用いて操作できる。そのため既存のアプリケーションを改修せずに済む。
日本マイクロソフトの北川 剛氏(サーバープラットフォームビジネス本部 クラウドアプリケーションビジネス部 エグゼクティブプロダクトマネージャー)は「エンジン統合のメリットは、アプリ改修が不要なこと以外にもある。それは、段階的な移行やユーザーの環境に合わせた最適化が可能なことだ」と言う。
例えば、新システムがカットオーバーした当初、DBへのアクセスが少ないときはインメモリー機能を使わず従来型DBとして運用しておき、アクセスが増えたら物理メモリーを増設してインメモリーDBへ移行する。こういったシステム稼働後のシームレスな移行を簡単に実現できる。
「従来型DBかインメモリーDBか」という二者択一ではなく、特に高速性を要求される一部のDB処理だけをインメモリー化してHekatonで実行させる「環境に合わせた最適化」が容易なのもメリットだ。
実際の利用状況に基づき、既存DBのどのテーブルをインメモリー化すればよいかを分析しアドバイスする機能を備えた「AMR(Analysis, Migrate and Report)」ツールも標準で用意する。このツールを使うと、アクセス頻度や競合(ロック待ちやラッチ待ち)が多いテーブルについて、インメモリー化によってどれくらい性能向上が期待できそうかを確認できる。