PR

パフォーマンスを支える4つの技術―Oracle 11g R2、その実力を解剖する Part 4

性能を最大限に引き上げるインメモリー技術と自動チューニング

検索や更新のパフォーマンス(性能)をいかに高めるかは、昔から変わらぬDBMSの重要なテーマである。情報システムの大規模化や複雑化が進む一方の現在、その重要性は一層、高まっている。パート4ではインメモリー技術やSQL文の自動チューニング機能といった、「パフォーマンス」の側面から、Oracle Database11g R2の技術を解説する。

Oracle Databaseは信頼性を損なわずに拡張性や可用性を高めるのと並行して、パフォーマンスの向上に力を入れてきた。増大する一方のデータを、高速に更新・検索するニーズに応えるのと同時に、大容量化・低価格化が進む半導体メモリーの利点を享受できるようにするのが骨子だ。

ここではその主要技術として、(1)メモリー上にDBを展開して処理を高速化する「TimesTen In-Memory Database(IMDB)」、(2)クエリー処理を分割して並列で実行する「In-Memory Parallel Query」、(3)データウェアハウス(DWH)アプライアンス「Oracle Exadata」、(4)SQL文などの自動チューニング機能、について解説する。

機能改良・強化を重ねOracleとの親和性向上

TimesTen IMDBは、2005年6月に企業買収によって得たインメモリーDB製品である。買収後、4年の開発期間をかけて、Oracle Database とのデータ型の共通化やSQL構文の互換性の強化、Oracle DatabaseのネイティブAPIであるOCI(Oracle Call Interface)のサポートや、ODBC/JDBCだけでなくPro*C、PL/SQLといったオラクル独自の開発言語のサポートなどを実施してきた。これによりOracle Databaseを使用しているアプリケーションの多くで、TimesTen IMDBが使えるようになった。

TimesTen IMDBは単独で稼働するが、Oracle Databaseと連携させることもできる。「Oracle In-Memory Database Cache」がそのための機能であり、Oracle Databaseの表に対する「キャッシュ表」をTimesTen IMDB上に定義すると、自動的に双方のデータベースの同期をとる。この機能は、Oracle Databaseのオプション製品として提供している。

ボトルネックを解消しOLTP処理を高速化

ではTimesTen IMDBとOracle Databaseは、どう違うのだろうか。「前者はディスクではなく、メモリー上にデータを展開するから処理が高速」と考えるのは間違いではないが、高速化の仕組みを正確に理解したとは言えない。

図4-1を見て頂きたい。TimesTen IMDBは、一般的なDBMSが抱えるいくつかのボトルネックを解消して、パフォーマンスの向上を実現しているのだ。1つがディスクへの入出力を意識しないで済むので、データベース・ブロック単位でのデータ管理が不要になること。事実、IMDBの索引のリーフにはメモリー上の物理アドレスの情報が格納されており、ダイレクトにデータにアクセスできる。

図4-1 一般的なDBシステムとインメモリーDBの違い
図4-1 一般的なDBシステムとインメモリーDBの違い(図をクリックで拡大)
インメモリーDBは文字通りアプリケーションサーバーのメモリー上にDBサーバー内のデータを展開する。アプリケーションサーバーとDBサーバー間、DBサーバー内のプロセス、ディスクアクセスなど各種ボトルネックを解消することでOLTP処理の高速化を実現する

これに対し、一般的なDBMSはメモリーにデータをキャッシュする仕組みを備え、特に高速処理を要求されるOLTPでは100%に近いデータをメモリー上にキャッシュして処理を行うことができる。しかし、ブロック単位でのデータ管理が必要なゆえに論理IDから物理アドレスへのアドレス変換のオーバーヘッドが生じるのである。

第2が、アプリケーションサーバー上にIMDBを配置することで、アプリケーションと同一のプロセスでデータベース処理を行えること。一般的なDBMSにある、DBサーバーとのプロセス間通信のボトルネックやネットワーク通信による遅延を排除できるわけだ。当然、バッファ管理などのオーバーヘッドも少なくできる。こうしたことにより、IMDBでは1件の処理あたりの実行命令数が、そうでないDBMSの約10分の1程度になる。

ただし、あらゆる処理を高速化できるわけではない点に注意する必要がある。TimesTen IMDBは索引を使った検索処理を高速に実行することを前提に開発されており、例えば全文検索やアドホックな検索には向かない。特にデータウエアハウスのように、一度に大量のデータにアクセスする用途では、並列処理が可能なOracle Databaseの方が高速化を図れる。

次のページでは・・・▶高負荷のクエリーを分割 メモリー上で並列処理

IT Leaders 毎月無料でお届けいたします

本誌は、読者登録いただくことにより、毎月無料でみなさまのお手元まで直接お届けいたします(書店などでは販売していません)。

企業の情報システムを担当する方々や事業部門のIT担当の方々、およびIT関連プロフェッショナルの方々を対象に、実践的に役立つ情報を掲載、幅広く業務にご活用いただけます。

IT Leaders新規購読お申し込みはこちらから
Ads by Google