Pick Upテクノロジー

ストレージI/OをSSDで高速化 前編 「その仮想化、待った!」データベースの統合化の「落とし穴」とは

データベース統合で課題となるのがストレージI/Oのボトルネックだ。これを解消するOracle Database 11g Release 2の新機能「Database Smart Flash Cache」の検証実験を、新日鉄ソリューションズと日本オラクルが共同で実施した。明らかになったその効果をご報告しよう。(編集部)

■データベース統合化の意外な「落とし穴」

「データベース環境の統合化には、大きな『落とし穴』が潜んでいます」と指摘するのは、日本オラクル株式会社 テクノロジー製品事業統括本部 データベースエバンジェリスト 柴田長氏だ。しかも同氏によると、この問題はいま悪化の一途を辿っているという。「ご存知のとおり、近年のITシステムのトレンドは仮想化による統合化(コンソリデーション)です。データベース環境においても例外ではなく、統合化によってH/Wリソースの効率的な活用が期待されています。しかし、統合されたデータベース環境ではストレージのディスクI/O性能のボトルネックがとりわけ高くなります。その結果、統合後はシステム全体のスループットが大きく低下するケースも少なくありません」(柴田氏)。

以下のグラフは、実際にある環境で確認されたボトルネック発生の例である。ここでは、それぞれ独立した環境で動作していた2つのOLTP系のデータベース(データベース1とデータベース2)を仮想化環境で統合した結果、もともと各データベースで得られていたパフォーマンスの半分以下しか提供できていないことが示されている。

tc_101103-03.png

データベースの統合によるスループットの低下

このボトルネックの発生原因について、柴田氏は次のように分析する。「この最大の要因は、近年のマルチコアCPUによる速度向上に比べて、膨大なデータを供給しなければならないHDD側では性能が頭打ちになっており、両者間に何桁もの性能差が生じていることです。とりわけ仮想化環境ではストレージI/O性能を引き上げるのが困難であり、ボトルネックが容易に発生してしまいます」(柴田氏)。

 

Oracleデータベースでは、物理メモリ上に確保した「Database Buffer Cache」上にHDD上のデータブロックをキャッシュすることで、SQL処理の高速化を実現している。よって、1つのSQLで数ミリ秒の高速なレスポンスタイムを要求されるOLTP処理の場合、Database Buffer Cache上のデータブロックのみで全ての処理を実行できるようにメモリ領域を確保しておくことが重要となる。これにより、キャッシュされたデータについてはHDDへのアクセスが不要となり、レスポンスタイムが向上する。

 

これに対し、Database Buffer Cacheに対して十分な領域を割り当てることができないと、キャッシュミスが多発し大幅なI/O待ち時間が発生することになる。「近年はデータ量やユーザー数が増加している上、仮想化によって割り当て可能なメモリサイズが減少することで、この問題が顕在化しつつあります。対応策としては、物理メモリの増強やサーバーのスケールアップに加えて、最近話題のSSD(半導体ディスク)やフラッシュストレージの導入が最も有効な手段として考えられます。HDDに比べてケタ違いに高速なSSDをHDDの代わりに利用できれば、上述のようなボトルネックは大幅に削減できます。しかし現在のSSDが抱える最大のネックは、HDDに比べてまだまだ高価なため、HDDのすべてのデータをSSDに収めることが困難な点です」(柴田氏)。

■SSDの能力を最大限に引き出す"スマートな(賢い)"キャッシュ

ではもし、HDD上のすべてのデータのうち、「本当に必要なデータ」だけを選んでSSDに格納することができれば、ストレージI/Oのボトルネックを効率的に解消できるのではないか。こうした発想から生まれたのが、Oracle Database 11g Release 2 Enterprise Editionの新機能「Database Smart Flash Cache」である。Database Smart Flash Cacheは、物理メモリよりも安価で、HDDよりも圧倒的に高速なSSDをDatabase Buffer Cache(Level 1 Cache)の拡張領域(Level 2 Cache)として活用する機能であり、データベース・インスタンスによって一度使用されたデータのみをSSDに書き込みます。これにより、従来ではアクセス頻度が高いにも関わらずメモリ容量の制限によりDatabase Buffer Cacheから削除されていたデータブロックが、Database Smart Flash Cache領域にキャッシュされます。その結果、キャッシュミスしたデータをSSDから取得できるため、キャッシュヒット時と同等の高速なレスポンス時間でアクセス可能となります」(柴田氏)。

tc_101103-02.png

Database Smart Flash Cacheの効果

Database Smart Flash Cacheが「スマートな(賢い)キャッシュ」と呼ばれるゆえんは、本当に必要なデータのみを選んでSSDに格納できる能力にある。例えば大量データの検索処理をパラレル実行した際のDirect Path Readのように、Database Buffer Cacheを経由しないデータブロックの読込みが行われる場合は、Database Smart Flash Cacheは使用されない。一方、アプリケーションから発行される1つ1つのSQLが数行のSELECTや1行のINSERT等のOLTP処理に対応するデータブロックのみが、Database Smart Flash Cacheに保存される。こうしたインテリジェンスによって、単純にHDDをSSDで置き換える場合に比べて、SSDのケタ違いのアクセス速度をOLTP処理の高速化という目的にピンポイントで活用可能となる。また、SSDに障害が発生した場合でもDatabase Smart Flash Cache領域上のキャッシュが無効化されるだけであり、データを消失する心配はない。

 

柴田氏は、このDatabase Smart Flash Cacheが特に効果を発揮する用途を次のように説明する。「OLTP処理に代表される『ランダムアクセス』が中心となる用途で抜群の効果を発揮します。特に狙い目は、SiebelやSAPなどのパッケージアプリケーションや、その他の『簡単には設計や実装を変更できないアプリケーション』です。ハードウェアにSSDを追加しDatabase Smart Flash Cacheを設定するだけで、劇的なパフォーマンス向上が実現するケースも少なくありません。アプリケーションに手を入れる必要はまったくないのです」(柴田氏)。

では、実際のところDatabase Smart Flash Cacheは現実のデータベースシステムにおいてどの程度の性能向上を達成するのだろうか。次回は、日本オラクルがベンダー各社と共同で実施した検証結果を紹介し、その実力に迫ってみたい。

 

データベース統合環境の性能向上を実現するSSD活用のベストプラクティス

後編に続く