HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験

2010年4月26日

リレーショナルデータベースを利用する際には、高い性能を引き出すために物理設計をし、スキーマを工夫し、パラメータのチューニングを行うことがつねに行われてきました。

性能のボトルネックはたいがいHDDにあり、いかにそのボトルネックを回避するかがチューニングのポイントですが、最近では性能向上のための武器として、HDDよりもずっとアクセス性能の高いSSDが注目されています。SSDはHDDと置き換えるだけで、アプリケーションにまったく手を加えずに性能向上を可能にする手段として非常に魅力的です。

HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクルと富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました(参考「日本オラクルと富士通 フラッシュ技術活用によるデータベース高速化を共同検証」)。

ホワイトペーパーでは、HDDの代わりにSSDを用いた場合、OLTP処理ではリレーショナルデータベースの性能が約2.4倍程度向上したとの結論が得られています。その内容を紹介しましょう。

ディスク自体の性能は約10倍から20倍違う

検証を行ったシステム構成は次のようなものでした。

  • Sparc Enterprise M300×2台(Sparc 64 VII、32GBメモリ)
  • Oracle 11g R2を上記のサーバ2台でクラスタ構成
  • ETERNUS DX80(HDD300GB/15000rpm×24)
  • ETERNUS DX80(SSD100GB×8+HDD300GB/15000rpm×2)

2台のサーバは1000Base-Tのインターコネクトで接続。ストレージとは8GbpsのファイバーチャネルによるSANで接続されています。このサーバに対して、これにベンチマーク用のシミュレーションを行うクライアントマシンがLANで接続されています。

HDDをSSDにしたらデータベースはどれだけ速くなるか? fig1

ポイントは、エンタープライズ用途を想定してリレーショナルデータベースが利用され、サーバがクラスタ構成であり、そしてストレージがSANで接続されているところでしょう。つまり、1台のサーバにDASでSATA、といったよくある構成でのベンチマークではない、というところです。

まずは単純にHDDとSSDの性能比較が行われています。ブロックサイズを2KBから32KBに変えつつそれぞれのランダム読み込み性能を比較したグラフ。8KBのブロックサイズでは、SSDはRAID1においてHDDの約14倍、RAID5では約9倍の性能と説明されています。

HDDをSSDにしたらデータベースはどれだけ速くなるか? fig2

ランダム書き込み性能では、8KBのブロックサイズでSSDがRAID1において21倍、RAID5では9倍の性能。

HDDをSSDにしたらデータベースはどれだけ速くなるか? fig3

SSDでは先にCPUがボトルネックに

続いて、OLTP処理での性能検証です。商品検索の後に購入する、という処理(TX1)と、商品検索のみの処理(TX2)の2つを2対8の割合で混在させ、大量に発生させるという方法でベンチマークをとっています。

その結果を見てみると、300スレッド時にSSDがHDDに対して約2倍の性能を発揮していることが分かります。

HDDをSSDにしたらデータベースはどれだけ速くなるか? fig4

HDDは200スレッドで性能が頭打ちなのに対し、SSDは200スレッドから300スレッドになってもまだ性能は上昇。ただし、300スレッド時にはCPU利用率が100%に近づいており、先にCPU性能の方がボトルネックとなってしまったようです。

よくアクセスされる部分だけをSSDに載せてみる

データベースのすべてをSSDに載せ替えられるのなら話は簡単ですが、現実にはエンタープライズ向けのSSDストレージの価格はいまのところ非常に高価であり、予算的に簡単にできる話ではありません。

最後のベンチマークではOracle 11g R2に対して、データベースのアクセスの多い部分だけを自動的にSSDへと移動してくれる「Database Smart Flash Cache」機能を試しています。

システム構成として、2ノードあるデータベースサーバそれぞれに90GBのSSDを割り当てています。この状態でベンチマークをとったのが以下のグラフ。

HDDをSSDにしたらデータベースはどれだけ速くなるか? fig5

クライアントからの検索範囲が9GB(データベースのデータ量として)に収まるときには、全部がメモリのバッファキャッシュに載るためにHDD、SSDのどちらでも性能に違いはありません。その後検索対象が90GBまではSSDの性能は非常に伸びていきます。最大でHDDと2.4倍の性能の違いがあったことが示されています。

2倍~3倍程度の性能向上をどう見るか?

このホワイトペーパーでは、SSDに全部載せ替えた場合とDatabase Smart Flash Cacheを使った場合では、後者のベンチマークの方が2.4倍と大きな数値を示していますが、両者の環境は違いますので、Smart Flash Cacheの方が性能向上の効果が大きいとはいえません(このホワイトペーパーの目的が同製品の性能を示すことにあり、わざと数値のよい見せ方をしたのかもしれません)。

SSDに全部載せ替えたベンチマークではCPU性能がボトルネックになって2倍にとどまってしまったわけで、理屈からいってもSmart Flash Cacheを使うより、全部SSDに載せ替えてしまった方がより大きな性能を示すはずです(できれば同じベンチマーク方法で比較してほしかったですね)。

いずれにせよ、こうしたベンチマークが公開され、導入を検討している顧客にとって対投資効果の判断材料が提供されるのはよいことです。

とはいえ、HDDとSSDそのもののアクセス性能を比較した場合は10倍から20倍性能が違うのに対し、実際の業務を想定したOLTP処理性能の比較ではそれが2倍~3倍程度に収まりそうであるのにはやや肩すかしを食らった感じもします。

結果を見るかぎり、SSDに対して過大な期待をせずに導入を検討すべき、というのが現実のようです。

参考記事

フラッシュメモリをストレージの用途に用いることで、これまでのストレージと比べて飛躍的に高いアクセス性能を実現するSSD(Solid State Drive)の登場は、ストレージ周りのさまざまな技術に新たな変化を引き起こしています。

米インテルは、マイクロンと共同開発した新しい不揮発性メモリ「3D XPoint」を採用したサーバ向けSSD「Optane SSD DC P4800X Series」を発表しました。

IBMは、IBM Cloudのベアメタルサーバでインテルのデータセンター向けSSD「Optane SSD DC P4800X」が8月から利用可能になると発表しました。

あわせて読みたい

RDB データベース Oracle SSD




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本


<!- script for simple analytics events -->