Database Support Blog

  • Oracle Database
2014.09.03

既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.1

既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.1

2014年7月22日、インメモリ技術によってOracle Databaseを高速化するOracle Database In-Memoryがリリースされました。本連載では、OLTPとDWHの処理を同時に高速化し、「業務を変える」とまで言われているその仕組みや性能に迫ります。


Vol.1 OracleDBを超高速化!図解でわかるOracle Database In-Memoryの仕組み

役者が揃ったインメモリ・データベース市場


Oracle Open World 2013でその存在が明らかになってからおよそ1年、ついにOracle Database In-Memoryの提供が開始されました。先日開催された国内向けのローンチ・イベントとなるOracle DBaaS & Big Data Summitでは、セミナー会場が満席となり立ち見が出るなど、本製品には非常に多くの期待が寄せられています。

インメモリ・データベースについてはこれまで多くの製品がリリースされており、1990年代にTimesTen社やSolid Information Technology 社などが先駆者となり歴史を作ってきました。最近ではSAP社のHANAやIBM社のDB2 BLU Acceleration、Microsoft社のSQL Serverなどインメモリの技術が次々と投入され、データベースにおけるトレンドになりつつあります。

ITR社のユーザ調査では、「インメモリ・データベースをすでに導入している」と回答した割合が23.0%、「今後1年以内に導入を予定している」が19.0%、「導入に向けて具体的な取り組みを始めている」が12.0%となっており、その注目度は数字にもはっきりと現れています。

インメモリ・データベースの導入状況

図1:インメモリ・データベースの導入状況

Oracle Database In-Memoryも広い意味ではインメモリ・データベースに分類される製品ですが、これまでのインメモリ・データベースとの大きな違いは、「アプリケーションやSQLの変更なしに、OLTPとDWH処理の両方を高速化できる」という点です。インメモリ用に別のソフトウェアやハードウェアを導入したり、固有のプログラムを書く必要はありません。Oracle Database用に作成された既存のアプリケーションやデータといった資産をそのまま使うことができるのが、最大の強みであり差別化のポイントです。セットアップも非常に簡単で、Oracle Databaseが導入されている環境で機能をオンにするだけです。

Oracle Database In-Memoryの特徴

図2:Oracle Database In-Memoryの特徴

行と列のデュアル・フォーマット


現在稼働している多くのデータベース・システムでは、用途に応じて「OLTP用」と「DWH用」のデータベース(DBMS)をそれぞれ使い分けています。DBMSにはロー(行)型、カラム(列)型という2つの代表的なフォーマットがあり、それぞれ向き不向きが存在するためです。

例えば、Oracle Databaseが採用しているロー型のフォーマットの場合、少数の行に対して多くの列を扱うようなOLTPとしての用途には向いていますが、大量の行に対して少数の列を扱うDWH処理には向いていません。カラム型のフォーマットはその逆で、DWH処理には向いているものの、OLTPには向いていないという特性があります。
※ 適切な索引を作成したり、圧縮やパラレル処理を行うことで性能向上を図ることはできます。

そのため、以下のようにOLTP用のデータベース(基幹系システム)で追加/更新されたデータをDWH用のデータベース(情報系システム)にロードし、それから分析をするという構成にならざるを得ず、このタイム・ラグがリアルタイムな情報活用を困難にしていました。

ロー型とカラム型の使い分け

図3:ロー型とカラム型の使い分け

Oracle Database In-Memoryでは、メモリ上にロー型とカラム型のフォーマットを同時に保持するという仕組みを採用しており、OLTPとDWH処理の両方を高速化できるようになっています。OLTPでは従来どおりデータベース・バッファ・キャッシュを使い、DWH処理では新しく実装された「インメモリ・カラムストア」というメモリ領域を使います。

インメモリ・カラムストア内のデータはカラム型のフォーマットになっており、DWH処理をディスクI/Oなしで実行できます。Oracle Databaseの中に、DWH処理に特化した機構が実装されたと考えれば分かりやすいでしょう。これにより、ロー型と比べて数十倍~数百倍の性能向上が期待できます。

情報系システムにデータをロードしてから分析するというこれまでの常識を変え、OLTPもDWH処理もすべて同じデータベース上で高速に処理できるのが、Oracle Database In-Memoryなのです。

Oracle Database In-Memoryのデュアル・フォーマット

図4:Oracle Database In-Memoryのデュアル・フォーマット

アプリケーションからは透過的


Oracle Database In-Memoryは、従来のOracle Databaseにインメモリ・カラムストアを追加したものです。あくまでOracle Databaseとして動作するので、カラム型のデータだからといってSQLを書き換えたり、表の構成を変更する必要はありません。インメモリ・カラムストアとバッファ・キャッシュのどちらを使うのかは、オプティマイザが自動的に判断してくれます。

また、インメモリ・カラムストアとバッファ・キャッシュのデータにはトランザクションの一貫性があり、更新内容も自動的に同期がとられるようになっています。そのため、どちらか一方のデータだけが古くなるという状況にはなりません。これにより、OLTPを実行しながら、その裏で最新のデータを使ったDWH処理を実行するというリアルタイムな情報活用が可能になります。

アプリケーションからの透過的なアクセス

図5:アプリケーションからの透過的なアクセス

インメモリ・カラムストアの存在は、OLTPの性能にも良い影響を与えます。DWH処理をインメモリで行うことで索引が不要になり、表のデータを更新する度に行われていた索引メンテナンスのオーバーヘッドがなくなるからです。DWHでは分析軸(WHERE句の条件)が多いほど索引の数が増えていくので、表にある大半の列に索引が作成されているというケースも珍しくありません。そうなるとデータを更新する際にかなりのオーバーヘッドが発生してしまいますが、Oracle Database In-Memoryではそのような心配はありません。これがOLTPを高速化できる理由です。

索引の削除によるOLTPの高速化

図6:索引の削除によるOLTPの高速化

3ステップで設定完了


Oracle Database In-MemoryはOracle Database 12.1.0.2から提供された新しいオプションなので、使用にあたっては最新のパッチ・セット・リリース(PSR)を適用する必要があります。環境さえ用意できればあとは簡単で、最短3ステップで設定が完了します。

Oracle Database In-Memoryの設定に必要な3つのステップ

  • 1. インメモリ・カラムストアのサイズを決め、初期化パラメータを設定する
  • 2. インメモリ・カラムストアに格納するデータを選択する
  • 3. インメモリ・カラムストアにデータを読み込む(ポピュレーションを行う)


①インメモリ・カラムストアのサイズを決め、初期化パラメータを設定する

インメモリ・カラムストアのサイズは、初期化パラメータのINMEMORY_SIZEで指定します。最小値は100MBで、インストール直後は0(無効)になっています。インメモリ・カラムストアはSGAの中に含まれる領域であるため、設定の際はSGA_TARGETのサイズを大きめに設定しておく必要があります。設定の反映にはインスタンスの再起動が必要です。

また、インメモリ・カラムストアは自動メモリ管理(SGA_TARGET,MEMORY_TARGET)の対象にはならないので、サイズの自動調整は行われません。そのため、ある程度余裕を持ったサイズを指定しておくと良いでしょう。

インメモリ・カラムストアの設定

図7:インメモリ・カラムストアの設定

②インメモリ・カラムストアに格納するデータを選択する

インメモリ・カラムストアには、インメモリ化することを明示的に指定したデータだけが格納されるようになっています。表単位で指定できるのはもちろんのこと、限られた領域を効率的に使うために特定の列やパーティションだけを指定することもできます。

格納するデータの選択

図8:格納するデータの選択

設定方法は非常に簡単で、例えば表全体をインメモリ・カラムストアに格納したい場合は、以下のようにALTER文でINMEMORY属性を指定するだけです。

ALTER文


③インメモリ・カラムストアにデータを読み込む(ポピュレーションを行う)

データ・ファイルの中にあるデータをインメモリ・カラムストアに読み込む動作を「ポピュレーション」と呼びます。ポピュレーションが行われるタイミングは大きく2つあり、以下のように優先度を明示的に設定している場合は、バックグラウンド・プロセスによって自動的にポピュレーションが行われます。反対に優先度を設定していない場合は、初回アクセス時にポピュレーションが行われます。

優先度の設定

図9:優先度の設定

優先度を設定するには、2.のALTER文にPRIORITY句を追加します。NONE以外の優先度に設定しておけば、あとはバックグラウンド・プロセスが自動的にポピュレーションを実行してくれます。

ALTER文


6種類から選択できる圧縮レベル


Oracle Database In-Memoryを使用する際には、サーバに搭載されているメモリの容量が重要になります。もちろん多ければ多いほど良いのですが、最近相次いでリリースされているようなテラバイト級の大容量メモリ(ビッグ・メモリ)を搭載したサーバが必須かというと、そうではありません。

先ほど紹介したとおり、Oracle Database In-Memoryでは必要なデータだけを選んでメモリ上に配置できます。一般的なインメモリ・データベースのように、すべてのデータをメモリ上に配置する仕組みではないので、まずこの時点でメモリの使用量を抑えられます。さらに、メモリ上のデータは自動的に圧縮されるため、実際に必要なメモリ量は想像よりもずっと少なくなるのです。

Oracle Database In-Memoryでは6種類の圧縮レベルをサポートしており、それぞれ「DML向け」「クエリ向け」など用途別に特化した動作になっています。例えばFOR QUERYであればクエリの性能が優れており、FOR CAPACITYであれば圧縮率が優れています。これらを使い分けることで、必要なデータだけを適切なサイズでメモリ上に配置することができます。

6種類の圧縮レベル

図10:6種類の圧縮レベル

圧縮レベルを設定するには、ALTER文にMEMCOMPRESS句を追加します。何も指定しなかった場合はFOR QUERY LOWが選択され、クエリ向けに最適化された圧縮モードになります。圧縮モードは重要度と並ぶ大事な設定のひとつなので、用途に応じた設定を意識するようにしましょう。

ALTER文


今回はOracle Database In-Memoryの仕組みを中心にご紹介しました。これまでのOracle Databaseにインメモリ・カラムストアを追加するというシンプルな仕組みでありながら、アプリケーションやSQLを変更することなく処理を高速化でき、さらに圧縮によって限られたメモリの領域を効果的に使える機能になっています。これまでにない強力な機能なので、その仕組みや効果について理解を深め、自社のシステムに適合するかどうか検討していただければと思います。

次回はOracle Database In-Memoryの検索性能について詳しくご紹介します。


連載記事

既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.2
既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.3
既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.4
既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.5
既存の概念を覆す!Oracle Database In-Memoryのテクノロジー Vol.6


執筆者のご紹介

アシスト関 俊洋

関 俊洋
クラウド技術本部

2006年入社。データベース・システムの構築や運用トラブルの解決といった業務を経験し、その後新製品の検証やソリューションの立ち上げを経てエバンジェリストへ。2016年にクラウド事業を立ち上げ、現在はクラウドとデータベースの二足の草鞋を履いている。...show more

本記事をご覧いただいている方へのご案内

最後までご覧いただきありがとうございました。
本記事でご紹介した製品・サービスに関するコンテンツをご用意しています。また、この記事の他にも、IT技術情報に関する執筆記事を多数公開しておりますのでぜひご覧ください。


■本記事の内容について
 本記事に示した定義及び条件は変更される場合があります。あらかじめご了承ください。

■商標に関して
 ・Oracle®、Java、MySQL及びNetSuiteは、Oracle、その子会社及び関連会社の米国及びその他の国における登録商標です。
 ・Amazon Web Services、AWS、Powered by AWS ロゴ、[およびかかる資料で使用されるその他の AWS 商標] は、Amazon.com, Inc. またはその関連会社の商標です。
  文中の社名、商品名等は各社の商標または登録商標である場合があります。

関連している記事

  • Oracle Database
2024.04.08

【Oracle Database】FAQで安定運用に貢献!サポートセンターのナレッジ公開の取り組み

アシストオラクルサポートセンターが公開しているFAQは、仕様に関するQAやエラー発生時の対処方法などはもちろん、不具合情報や障害発生時の情報取得方法といった安定運用に役立つ内容も扱っています。そのFAQをどのように作成しているのか、サポートセンターの取り組みをご紹介します。

  • Oracle Cloud
  • Oracle Database
2024.02.02

OCIにおけるOracle Database 11g R2、12g R1、12g R2の新規プロビジョニング終了とその影響

Oracle Databaseのバージョン11g R2、12g.R1、12g.R2は既にすべてのメーカーサポートが終了しています。OCIのBase Database Serviceでも2024年1月中旬ころから11g R2、12g R1、12g R2での新規プロビジョニングができなくなりました。

  • Oracle Database
  • その他
2023.12.21

【Oracle Database】サポートセンターでの生成AI(Glean)活用

アシストでは全社員にAIアシスタントGleanを導入しました。サポートセンターで2ヶ月間使ってみて感じた効果やメリットをお伝えします。

ページの先頭へ戻る