パスワードを忘れた? アカウント作成
20836 journal

okkyの日記: "Oracle RAC & Grid Tuning with Solid State Disk" は面白い!!!

日記 by okky

Oracle RAC & Grid Tuning with Solid State Diskという本がある。洋書だ。

そんなに大したことが書いてある本ではない。RAM-SAN disk drive を Oracle 10g で使うときに、どこにどう適用すると性能が上がるか、説明している本だ。実際の TCP-C と TCP-H の結果、STATSPACK やAWRRPT の出力結果から、何を SSD に移すと早くなるのかをどう見つければいいのか、などが書かれている。

あ、RAM-SAN というのは RAM ディスクを SAN 経由で通常の Raid のように見せかける装置。この本では、64Gbyte RamSan400 SSD Array (Texas Memory System社製)をベンチマークに使っており、半分提灯本と化している。この本では SSD とは FlashROM を使っているどこぞの会社の DMX4 のようなものは含んでいない。

何が面白いかというと、SSDが圧倒的に早いためにいくつかの逆転現象が起こっている点だ。

  • Data と Index を SATA Raid に置いて、index をバリバリ効かせながらベンチマークを走らせるよりも、Index を消して Data だけにした上で SSD 上に載せて馬鹿サーチを掛けた方が早くなってしまうケースがある。
  • Oracle RAC は SGA(System Global Area)という領域を複数ノード同士で共有しているそうだ。複数のマシンがそれぞれ SGA の一部を管理し、disk IO する代わりに他のマシンが持っている block cache を利用しようというわけだ。が、SSDはFCで2Gbpsで通信できるのに(RAM に載せるだけなのでdisk IOコストがない)、通常の Ethernet 経由の block 転送は 1Gbpsしか出ない上に、相互問い合わせやロックなどの管理が必要になる。結果として、SGA領域を大きくすると管理コストはサイズと負荷に対して超線形ででかくなる。

    でかくなると言っても、Raid などの disk IO に比べたらごみのようなもので無視できる。結果、HDDを使っている限りメモリが十分にあるノード同士の場合、SGAを大きくするほど、disk IOが減り、負荷を増大させた場合の turn around time が落ちない。

    が、SSD を使っていると、SGA管理オーバーヘッドが無視できない。それぐらいSSDが早いのだ。結果として、SGAを大きくして負荷を増大させると、SGA管理オーバーヘッドが露骨に見えてしまう。SGAを小さくして、各ノードが SSD に読みに行くほうが turn around time が悪化しないのだ。

載っているグラフの結果に対する検討が甘っちょろく、なおかつ説明不足なので『本』としては三流といわざるを得ないが、掲載されている情報そのものはこれ、間違ってないか??!?! (@.@)と目を見張るほど面白い(よくよく考えると、間違っていない)。

Oracle に限らず、DBMS屋さんは一度見てみたほうがよい。

.
.
.

一応この本は会社の金で買ったので、どこぞの FlashROM を使った SSD-DMX4 を擁護しておくことにすると。

DBMS の中でも read が頻繁に発生するもので、なおかつ index が非常によく効いているDBMSの場合、SSD -DMX4 を利用すると高速化が図れると思います。

FlashROMはシーケンシャルIOに関しては所詮HDDと同じ程度の速度しか出ません。市場要求のNo.1は常に容量増大と価格低下にあって、速度には無かったからです。しかし、FlashROMの基本構造上、Random Read は HDDに比べて圧倒的な速度が出ます。Head seek が全く発生しないからです。

Index を使った検索はまさにこの Random Read の塊になります。HDD Raid は(Raid 0 から 6 までの何であっても)head seek と spin wait をやりくりし、RAM cache を使って性能を出そうとしますが、そんなもので予測が出来るIOなら DBMS 自体が prefetch などを使って先読みしてくれます。先読みできないからこそ、負荷が Storage に Random IO の形で襲い掛かるわけです。

こういう場合は、FlashROM - SSD であっても圧倒的な性能向上が見られるでしょう。

しかし、Sequencial 検索…つまり事前 indexing がほとんど効かない、あるいはそもそも indexing していない場合は、ただの Sequencial IO になります。HDDだってそういうのはお手の物。同一 disk set 上にいくつもの DBMS ファイルを置いて、しかもそれらに対し同時に Sequencial IO をかけない限り(これをやると、Storage にはランダムIOに近い負荷がかかる)、HDDとFlashROMとで性能差は出ないでしょう。

FlashROM-SSD-DMX4を買うのと、HDDでできた DMX4 を3セット買ってIOが衝突しないようにするのと、どっちが安いのか…電気代などを考慮しない場合、かなり難しい質問になると思います。
# あとサーバルームが常夏になる危険性も考慮
# したほうがよいと思いますが。

単純に書き込み応答性能を早くしたいなら、この本にある RAM-SAN 製品を Raid-1 で2重以上にミラーリングするのがお勧めです。いくら頑張っても、所詮HDDはRAMの書き込み速度には勝てません。cache は「瞬間爆発」を吸収する能力はありますが、「平均速度」はHDDのそれを追い越すことはありえないのですから。

と言うわけで、この本は実にいろいろなことを示唆してくれていて、面白い。172ページ中 132ページまでしかまだ読んでいないので、あと40ページ、何が出てくるか、ワクワクだ。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...