|
Oracle 10gの高パフォーマンスを
実現した背景にあるテクノロジ
パフォーマンス向上を最大の目標に掲げてOracle
10gを開発したというオラクル。特にWindows環境でのパフォーマンス向上に注力した |
|
「パフォーマンスの向上はOracleエンジニアの優先課題だった」 |
オラクルはいつよりも気合いを入れて、「Oracle Database 10g」を開発した。ソースコードの改変も行われている。それは、Oracle6のときに行ったような、ゼロベースからの見直しではない。建築にたとえるならリフォームだ。基礎工事や柱などには手をつけないが、床材や壁材などはそっくり入れ替えて、まるで新しい建物のように生まれ変わらせるあの手法。具体的には、プログラムの冗長性を徹底的に排除し、新機能を加えつつも大胆なスリム化を図っている。
「その中においても、Oracle Database 10gでのさらなるパフォーマンス向上は、オラクルのエンジニアたちが高いプライオリティを置いた命題だった」と、日本オラクル
マーケティング本部 システム製品マーケティンググループ 担当マネージャー 山本哲也氏は語る。このバージョンには高速処理のための工夫が随所に盛り込まれているのである。
まずはエンジンコア部分だ。データベースエンジンプログラムの高速化に大きな役割を果たすのはオプティマイザである。今回、Oracle Database
10gではコストベースオプティマイザを全面採用。それにより全表走査では、Oracle9iに比べて速度が2倍になり、かつコストが1/2に低減した。またPL/SQLの実行エンジンも改良されており、ループ処理や演算の多いプログラムの高速化を実現している。
次にチューニング機能である。これまで、Oracleのパフォーマンスは、データベースエンジニアのチューニングテクニックに左右された。そのため、Oracleの性能にばらつきが出るのは否めない事実だった。データベース利用のすそ野が広がっている今日、性能がエンジニアの技量に依存するのは時勢に合わない。そこでオラクルはパフォーマンス・チューニングの2大ポイントであるメモリ・チューニングとSQLチューニングの方法に大きくメスを入れた。
メモリ・チューニングの到達点は自動化である。Oracle Database 10gには、初期のバージョンから開発に携わってきたオラクルの“グル”的エンジニアのチューニングナレッジが搭載されており、SGAもPGAも最大容量を指定すれば、その中での配分はOracleが最適化してくれる。そのため、エンジニアがあれこれと頭を悩ませなくても最初からパフォーマンスを稼ぐことができるのだ。もちろん、アプリケーションの要件により細部を自分で調整したいときには、マニュアルでチューニングすることも可能である。
SQLの記述方法もまた、パフォーマンスに大きな影響を与える。今回大きな変貌を遂げた管理ツール「Oracle Enterprise Manager
10g」にはSQLに関するアドバイザが2つ搭載された。1つが「SQL Access Advisor」であり、もう1つが「SQL Tuning Advisor」である。
前者はインデックスやマテリアライズド・ビューなど、SQLの実行効率を高めるオブジェクトの利用についてアドバイスをするもので、後者は、より効率的なSQL文をアドバイスするもの。アドバイスするだけでなく、それによってパフォーマンスがどう変化するかを確認することもできる。これまではどれがパフォーマンス上で問題となっているSQLなのかを突き止めることすらも難しかったが、10gからは、いわば常に講師がそばにいる状態でSQLコーディング/チューニングが可能になったのである。
一方、大容量データのエクスポート/インポートにおけるパフォーマンス向上に貢献するのは、Data Pumpである。データ転送のアルゴリズムを1から見直すとともに圧縮技術を採用するなどして、Oracle9iまでのエクスポート/インポートと比べて、インポートで15〜20倍、エクスポートで1.6倍の高速化を実現しており、しかもそれらはパラレル処理でスケーラビリティを出すことができる。Direct
Path API(DPAPI)を実装し、ストリームデータアクセスを高速化。これにより、データウェアハウス分野などでは、ソースデータベース、ターゲットデータベースがともにOracle
Database 10gであれば、サードパーティのETLツールを利用することなく、大規模なセントラルデータウェアハウスが容易に構築可能だ。
そして、これこそがエンドユーザーが渇望し、オラクルエンジニアも至上命題とした機能だったというWindows環境でのパフォーマンスの向上がある。具体的には、Windows
NT系のカーネルに備わってるユーザーモードスレッドであるファイバーモデルに対応した。プロセスモニタやログライタがこのファイバを使って動作するため、コンテキストスイッチが高速化し、メモリ効率や接続速度の向上が実現した。ファイルI/O機能の拡張も行われ、Oracle
Database 10gではすべてのタイプのファイルへの非同期I/Oをサポート。中断のないスムーズなプロセス処理が可能になったのである。
|
Windowsを含めすべてのファイルに対する非同期I/Oをサポート。中断することなくスムーズにプロセス処理を行えるようにした(クリックで拡大します。提供:日本オラクル) |
正式発表以来、次々と出されるOracle Database 10gでのさまざまなベンチマーク更新ニュースは、こうした広範囲で行われた機能強化がもたらした結果といえるだろう。
(次回は3月2日に記事を公開予定です)
Oracle
Technology トップページへ
|