連載
» 2013年06月26日 15時16分 UPDATE

Database Watch(2013年6月版):SQL Server 2014 処理高速化の仕掛け/Redshiftの先行評価の内容とは? (1/2)

「SQL Server 2014」が正式アナウンスに。高速化の仕掛けを取材。「AWS Summit Tokyo 2013」のセッションからはAmazon Redshiftの先行評価の情報を紹介する。

[加山恵美,@IT]

Hekaton=SQL Server 2014が発表に

 最近、次のSQL Serverの話題を耳にするようになりました。名称は「SQL Server 2014」で決まりのようです(関連記事、米国で開催されたTechEd会期中に発表されている)。

 SQL Server 2014にはオンライントランザクション処理(OLTP)に向けたインメモリデータベース機能が搭載されることになっており、「Hekaton」は、この機能の開発コード名です。「SQL Serverを100倍速くしたい」というSQL Server開発者らの気持ちを込めて、100倍を表す「ヘクト」が転じてHekatonになったといいます。

 今回は、日本マイクロソフトのSQL Serverカスタマーアドバイザリーチームでプリンシパルプログラムマネジャーを務める多田典史氏に、Hekatonについて話を聞きました。

mhdb_4842.jpg 日本マイクロソフトのSQL Serverカスタマーアドバイザリーチームでプリンシパルプログラムマネジャーを務める多田典史氏

「Hekaton」の名はOLTP向け高速データ処理エンジンに

 SQL Serverの将来像は、PCサーバのハードウェア技術動向と密接な関係にあります。

 最近のPCサーバでは、個々のCPUの動作周波数はさほど上がらないものの、マルチコア化が進み、メモリは価格が下落して大容量化が進んでいます。このトレンドに追随して、次世代SQL Serverは、マルチコアかつ大容量メモリといったハードウェアのトレンドに沿って開発が行われています。

 データベースを利用するビジネスの観点からは、高速なOLTPエンジンが求められています。例えば、株取引やオンラインゲーム、サプライチェーンなどの用途に向けてです。近年では携帯電話やデバイスセンサなどといった機器が刻々と出力するデータの処理の必要性も増大しています。

 SQL Serverの製品化に当たっては、目的別に整理する必要もありました。

 これまでマイクロソフトは、特定の目的に特化したSQL Server製品を用意してきました。例えば、データウェアハウスのスケールアップに向けた「Fast Track Data Warehouse」やスケールアウトに向けた「Parallel Data Warehouse」などです。それと同様に、大容量のメモリを利用できるシステム向けの、OLTPに特化したエンジンとして開発が進められているのが、Hekatonです。

 Hekatonで高速化を実現するための技術的なポイントとなるのが、(1)メインメモリにあるデータ処理の最適化(2)T-SQL(Transact-SQL)のフルコンパイル(3)行ロックフリーによる高並列化の3点です。

(1)メインメモリ上のデータ処理最適化

 まずはメインメモリにあるデータ処理の最適化について見ていきましょう。

 従来、データはディスクストレージに格納されており、そのデータはディスクからメモリに取り出して処理するため、データの格納単位には「ページ」が使われていました。

 しかし、データを常にメモリに乗せるHekatonのアーキテクチャなら、ページ単位でデータを取り出す必要はありません。そこでHekatonのデータベースインデックスは、ページ(ノード)をたどっていくB-Treeではなく、ハッシュで管理する仕様になっています。これで、目的の行に直接アクセスできるようになります。

 Hekatonでは、インデックスはメモリにのみ格納し、B-Treeなしのハッシュインデックスとしました。メインメモリに最適化したテーブルは下図の通りです。

mhdb_1884.jpg Hekatonのメインメモリに最適化したテーブル

 行に2つのタイムスタンプを持たせることで、そのデータの有効範囲を表します。これら2つのタイムスタンプはデータの有効期間の最初と最後を表し、最後に相当するタイムスタンプが「∞」なら、有効なデータと見なします。

 この仕組みは、行に複数のバージョンを持たせるために使います。1つの行をその都度更新するのではなく、更新の際には新しい行を作ってしまうのです。行のバージョン管理(どの行が古くてどの行が新しいのか)はタイムスタンプで判断します。これは後述するロックフリーにもつながります。

(2)T-SQLのフルコンパイル、DLL化して高速に

 次に、T-SQLのフルコンパイルについて説明します。T-SQLとは、手続き型プログラミング言語のような変数や制御文などを加えたSQL言語です。

 従来のT-SQLはインタプリタ的な処理をしていたのに対して、HekatonではT-SQLをフルコンパイルしてCPUのネイティブコードに変換し、処理の高速化を図っています。フルコンパイルしたストアドプロシージャはDLLとして保存されます。

(3)行ロックフリー&並列化

 最後にロックフリーです。近年ではマルチコア化が進み、多数のプロセッサコアで処理が並列に稼働します。そこで問題になってくるのが行ロックの問題です。ロックをうまく扱わないと、いくら並列で処理してたとしても、マルチコアの利点を生かせず、処理速度も高まりません。

 Hekatonでは、行をロックしないという発想を採用しています。行を更新するときには、前述の通り、内部処理では新規行を追加しています。

 行同士の比較・競合回避は「早い者勝ち」のルールで決めます。

 先にアップデートしようとした方が実行され、後から処理しようとした方は拒否されるというルールです。古い行は、ガベージコレクションによって削除されます。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。