S.A.M.E.(Stripe And Mirror Everything)について

今日(いやもう昨日か)職場で、「今回作っているOracle環境では、ちゃんとディスクI/Oの多い領域と少ない領域を分けてるんだろうな?」と親分に訊かれ、「いやその考え方は古い。涌いてるのは親分の頭だ。Oracleは2000年ごろからS.A.M.E.って考え方をだな、して、いて……、あれS.A.M.E.ってどんなだっけ? スマン涌いてたのはオレの頭でございましたーっ!」という会話があったので、改めて調べてまとめてみました。以下、ざっくりと

1.
かつてのストレージは、容量も小さく、転送量(MB/s)も小さかった。そんな時代は、書込みの激しいUNDOとかREDOログをデータ領域とは別のディスクに追い遣っておくことが有効な性能改善策だった。

2.
月日は流れ、ストレージはより高密度に、高速転送可能に進化していった。高密度=大容量のディスクが用意できれば分散させるだけのディスク数も確保できないし、転送量がネックにならなくなれば、ディスクヘッダの移動回数 = I/O回数(IOPS)がネックになる。こっちは転送量ほど劇的な進化は遂げていない。

3.
ということは、転送量を気にするよりも、いかにヘッダが効率的に動けるかを重視すべきなのではないか

4.
ヘッダを効率的に動かすには、データの種類を問わず分散させたほうが良い。ストレージに十分なキャッシュがあり、かつ確保したキャッシュを効率的に書き込めるアルゴリズムさえあれば、I/Oボトルネックにおいて、IOPS > MB/sの世界では効率的だからだ。

という信念で生まれたのがS.A.M.E.ということなんでしょうね、多分。

5.
複数ディスクにまたがった領域を持つ不安といえば、耐障害性なんですが、これはストレージ提供先もしくはOracle(ASMで"external"以外を選んだとき)に任せるしかないのかなぁ。

参考:
門外不出のOracle現場ワザ 第3章 データベース管理 転ばぬ先の杖〜設計編 インフラ設計の盲点
[http://www.miracleas.com/BAARF/oow2000_same.pdf:title=OPTIMAL STORAGE CONFIGURATION MADE EASY
](こっちはまだ頭の1、2ページしか読んでない状態で書いた)