ストレージI/OをSSDで高速化! 
後編 [検証実験]Database Smart Flash Cacheで10倍の性能向上を達成

パフォーマンス劣化を引き起こすストレージI/Oのボトルネックを解消する新機能「Database Smart Flash Cache」の検証実験を、新日鉄ソリューションズと日本オラクルが協同で実施。OLTP処理においてパフォーマンスが約10倍向上するという成績を得られた。(編集部)
 
 
■実機検証によって明らかになったDatabase Smart Flash Cacheの実力
 データベースに保持されるすべてのデータのうち、「本当に必要なデータ」だけを選んでSSD(半導体ディスク)に格納することができれば、ディスクI/Oによるボトルネックを効果的に解消できる――こうした発想から生まれたのが、Oracle Database 11g Release 2 Enterprise Editionの新機能「Database Smart Flash Cache」である。
 
 前回も説明したとおり、Database Smart Flash Cacheでは、アプリケーションから発行される1つ1つのSQLが数行のSELECTや1行のINSERT等のOLTP処理の対象となったデータブロックのみがSSDに保存される。これにより、SSDのケタ違いのアクセス速度をOLTP処理の高速化という目的にピンポイントで活用可能となり、まだ高価なSSDの能力を効率的に最大限引き出すことができる。「Database Smart Flash Cacheは、OLTP処理に代表される『ランダムアクセス』が中心となる用途で抜群の効果を発揮します。ハードウェアにSSDを追加しDatabase Smart Flash Cacheを設定するだけで、劇的なパフォーマンス向上が実現されるケースも少なくありません。アプリケーションに手を入れる必要はまったくありません」(日本オラクル株式会社 テクノロジー製品事業統括本部 データベースエバンジェリスト 柴田長氏)。
 
 そこで日本オラクルと新日鉄ソリューションズ株式会社では、このDatabase Smart Flash Cacheの実力を明らかにするための共同検証を実施した。
 
tc_101103-02_01.jpg
検証環境の仮想マシンとデータベース構成
 
 
 今回の検証環境としては、インテル(R) Xeon(R) プロセッサー E5540 (2.53GHz) および100GBのSSDを搭載したサーバー「DELL PowerEdge R710」を4台用意した。それぞれにインストールしたOracle VM server上で合計8つの仮想マシン作成し、4つずつを「RACデータベース1」および「RACデータベース2」に割り当てた。また、ASMディスクグループを構成するストレージ「EMC CLARiX CX4-240」と各サーバー間を4GbpsのFibre Channelで接続している。
 
■OLTP処理+バッチ処理のスループット低下が激減
 この環境において、1つめの検証シナリオ「OLTP処理を実行するデータベースと大量データを扱うバッチ処理を実行するデータベースの統合」が実施された。まずはDatabase Smart Flash Cacheを使用しない設定とし、RACデータベース1でOLTP処理を実行する。そして一定時間が経過した後、もう一方のRACデータベース2においてバッチ処理を実行する。すると、ストレージI/Oのボトルネックが発生し、OLTP処理のスループットは次の図のように低下してしまう。
 
tc_101103-02_02.jpg
バッチ処理実行時のOLTP処理のスループット低下
 
 一方、OLTP処理を実行するRACデータベース1側でDatabase Smart Flash Cacheを使用する設定に変更し、同じ手順を実行した場合のスループットは次のようになった。
 
tc_101103-02_03.jpg
Database Smart Flash Cacheの使用によるスループット改善
 
 このグラフが示すように、まずバッチ処理が実行されていない時のスループットが約2倍に向上している。また、バッチ処理の実行中のOLTP処理への影響も最小限に抑えられていることがわかる。さらに、バッチ処理時間が1/4程度に短縮されている。
 
 この検証結果について、柴田氏は次のように説明する。「今回のRACデータベース1のOLTP処理では、キャッシュ・ヒット率が100%ではなく、一部のデータをHDDから読込む必要のある負荷状態をシミュレートしています。Database Smart Flash Cacheを有効化した場合、このHDDに対するI/Oが高速なSSDへ移行するため、OLTP処理のスループットが向上しています。また、RACデータベース2側で使用可能なHDDのI/O帯域が増加した結果、バッチ処理側の処理時間も大幅に短縮しています」(柴田氏)。
 
tc_101103-02_04.jpg
OLTP処理のスループット向上と、バッチ処理側の処理時間短縮
 
 
■OLTP処理+OLTP処理で10倍の性能向上を達成
 つづいては、OLTP処理を実行する2つのデータベースを統合するシナリオの検証が実施された。まずDatabase Smart Flash Cacheを使用しない設定において、RACデータベース1および2の双方でOLTP処理を実行する。するとストレージI/O性能のボトルネックによって、それぞれを個別に実行した場合のスループットの合計に比べて、実際に得られるスループットは1/2以下となってしまう。
 
tc_101103-02_05.jpg
ストレージI/O性能のボトルネック発生時
 
 では、このシナリオにおいてRACデータベース1に対してDatabase Smart Flash Cacheを使用するとどうなるのか。その結果が、以下のグラフである(ちなみに、RACデータベース2についてはDatabase Smart Flash Cacheを使用していない)。
 
tc_101103-02_06.jpg
Database Smart Flash Cacheの効果
 
 このように、Database Smart Flash Cacheの使用により、RACデータベース1のスループットが10倍に向上し、RACデータベース2も単独実行時とほぼ同等のスループットにまで改善している。「このシナリオでも、先ほどのシナリオと同様に、Database Smart Flash Cacheの有効化によってRACデータベース1のI/O負荷がHDDからSSDへと移行することで、スループットは10倍にまで向上しました。また同時に、Database Smart Flash Cacheを用いないRACデータベース2側で使用可能なHDDのI/O帯域が向上し、スループットが単独実行時とほぼ同等近くまで改善しています」(柴田氏)。
 
 ただもちろん、すべてのOLTP処理においてこれと同様の劇的な改善が実現されるわけではないと柴田氏は説明する。「Database Smart Flash Cacheを有効化した際のスループットの改善幅は、OLTP処理内の更新処理の比率に依存します。更新処理が少なく読み取り処理の比率が高いほど、Database Smart Flash Cacheの効果はより高い物となります」(柴田氏)。
 
 ここで見たように、Database Smart Flash Cacheの特性を生かして適切な部分に適用すれば、アプリケーションコードに一切手を触れることなくケタ違いの性能向上を達成できることが、実際の検証作業によって確認された。Oracleデータベースサーバー構築における"必需品"としてSSDの活用が不可欠になるのもそれほど遠い先の話ではないだろう。
 
データベース統合環境の性能向上を実現するSSD活用のベストプラクティス
 
(以上)