Oracle Database In-Memoryは本当に激速なのか(前編)

EnterpriseZine / 2014年10月9日 13時0分

図3:IMCUとストレージ索引

 前回はOracle Database In-Memoryの仕組みを図解で解説しました。今回は実際にテーブルをインメモリ化して、検索処理の性能を測ってみます。Oracle Databaseにインメモリ+カラム型の技術が加わると、性能はどの程度向上するのでしょうか?

■テーブルをポピュレーションする

 前回のおさらいになりますが、Oracle Database In-Memoryには以下の特徴があります。分かりやすく表現すると、「Oracle Databaseにカラム型のメモリ領域(インメモリ・カラムストア)を追加したもの」がOracle Database In-Memoryです。

 Oracle Database In-Memoryの特徴

 メモリ上にロー型とカラム型のフォーマットを同時に保持する
 OLTPとDWH処理の両方を高速化する
 更新処理では従来通りデータベース・バッファ・キャッシュ(ロー型)を使う
 検索処理では新しく実装されたインメモリ・カラムストア(カラム型)を使う
 両者の使い分けはオプティマイザが自動的に判断してくれるため、SQLの書き換えは不要

 今回は、カラム型が得意とする検索処理を実行した時の性能を測っていきます。使用するハードウェアおよびOracle Databaseのパラメータは以下のとおりです。検証データはStar Schema Benchmark(※)を使って生成しており、テーブルのサイズは約70GB、レコード数は約6億です。
CPU         Intel Xeon E5-2640 2CPU16コア
メモリ       128GB
OS         Oracle Enterprise Linux 6.4
Oracle Database   12.1.0.2.0 シングル構成
初期化パラメータ  sga_target = 110g
inmemory_size= 100g
inmemory_max_populate_servers = 8

※Star Schema Benchmarkの詳細についてはこちらをご参照ください。

 まずは、各テーブルをインメモリ・カラムストアに読み込みます。この動作は「ポピュレーション」と呼ばれ、メモリに読み込む際にカラム型への変換や圧縮が行われます。ポピュレーションを行うには、テーブルに対してALTER文でINMEMORY属性を指定します。今回は優先度をCRITICAL、圧縮レベルをFOR QUERY LOWとします。
SQL> ALTER TABLE lineorder INMEMORY MEMCOMPRESS FOR QUERY LOW PRIORITY CRITICAL;

  • 前のページ
    • 1
    • 2
  • 次のページ
EnterpriseZine

トピックスRSS

ランキング