「スイッチを入れるだけで、これまでのクエリー処理が100倍速くなる」---2013年9月22日(米国時間)に幕を開けた米Oracleの年次カンファレンス「Oracle OpenWorld San Francisco 2013」、同社のラリー・エリソンCEOは基調講演でこう宣言した(写真1)。エリソンCEOが紹介したのは、「インメモリー・オプション」と呼ぶ、Oracle Database 12cで利用可能な追加機能。データベース内でデータをカラム(列)型で保持し、しかもインメモリーで操作することで、桁違いのスピードでクエリーが処理できるという。
「Oracleを含め多くのRDBMSはロー(行)単位でデータを操作してきたが、レポートを高速に作りたいなどのニーズに応えるため、最近はカラム型を採用する製品が増えている」。エリソンCEOは、カラム型に注目した背景をこう説明する。必要なデータをカラム単位で取り出せるカラム型は、データウエアハウス(DWH)系などで処理効率が高い。一方で、トランザクション系の処理は、ロー型に分がある。それでは、「同じデータを、ロー型とカラム型の両方の形式でメモリーに入れたらいいのではないか」(エリソンCEO)、というのがインメモリー・オプションの発想だ(写真2)。
「インメモリー・オプションを有効にするだけで、DWH系のクエリー処理は少なくとも100倍は速くなる。しかも、利用中のアプリケーションに手を入れる必要はない」と、エリソンCEOは新機能のメリットをアピールした。クエリーの高速処理を支えるのが、「SIMDベクター処理」である(写真3)。カラムに対するクエリー処理を各CPUコアに対して並列分散させることで、SIMD(Single Instruction Multiple Data)を実現する。
「カラム型を採用しても、なぜトランザクション処理は遅くならないのか」。エリソンCEOは利用者が抱くであろう疑問点を取り上げ、何度か言及した。簡単に言えば、「インメモリー・オプションの採用により、分析用のインデックスが不要になる」というのがその答えだ(写真4)。一般に、テーブルにはトランザクション処理用のほか、分析用のインデックスが多数設定されている。「トランザクション処理では、インデックスの更新に負荷がかかる。分析用のインデックスをはずしインメモリー・オプションに置き換えることで、トランザクション処理は2倍は高速になる」(エリソンCEO)。
「メモリー容量を設定し、対象のテーブルを決めたら、あとはインデックスをはずすだけ。これまでDBA(データベース管理者)は、インデックスの設定やメンテナンスに苦労してきたが、インメモリー・オプションにより、DBAの仕事も楽になる」とエリソンCEOは、インメモリー・オプションの手軽さも強調した(写真5)。