- ベストアンサー
データファイル等の物理的な配置について
環境:Oracle9i 9.2.0 言語:VB6 サーバ:Windows2003 Server サーバのドライブはCドライブ、Dドライブ、Eドライブに分かれています。 上記ドライブにデータファイル等を分散して配置するとディスクアクセスなどの性能が向上されるのでしょうか? 自分の認識では別ハードウェアのディスクに分散すると性能が上がると思っていたのですが同じハードの別ディスクに配置するだけで性能が向上するのであれば変更したほうがいいのかなと思っています。 アドバイスお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ドライブ (パーティション) だけでなく、ディスクが物理的に分割されているのであれば、I/O の分散による性能向上を見込むことは大いに期待できるでしょう。ただし、それは I/O がボトルネックになっていると分かっているときだけです。 例えば、索引スキャンすべきところを全表走査されるような物理設計になっていると、そちらがボトルネックになってしまうため、いくら、CPU、メモリ、ディスクがあっても性能が悪くなることはあり得ます。 性能劣化の原因の80%ほどは、SQL 文に問題があるとも言われていますので。ただし、最近のリリースではオプティマイザが改良されて、悪い SQL でも高性能を引き出せるようになりつつありますが、そういう機能に頼っていると思わぬ不具合にぶち当たることが多いです。
その他の回答 (2)
- whiteline507
- ベストアンサー率63% (47/74)
ハードウェアとディスクというキーワードがごっちゃに なっているので認識を合わせるために整理させてください。 ハードウェア=> あくまで物理的に異なるストレージエンクロージャ(物理ディスクを複数搭載できる機器) 物理ディスク=> ストレージエンクロージャ内に搭載するディスク(いわゆる36GB玉とか72GB玉とかいうやつです) 論理ディスク=> OSに論理的に見せているディスクスペース(1論理ディスクが1物理ディスクから構成されているとは限らない。逆に一般には1論理ディスクが複数の物理ディスクから構成されているのが一般的) で、おそらく質問者様は上記のようなLVM(Logical Voloume Management)の説明なんか聞きたいわけではなく、1つの物理ディスク(72GB玉としましょう)を 72GBのCドライブとしてOSに認識させてそこに全部データファイルを置くのと、 20GBのCドライブ、30GBのDドライブ、22GBのEドライブとしてOSに認識させてそれぞれCとDとEに分散してデータファイルを置くのとどっちが速いのか という質問だと思います。 結果は速くなりません。 理由はNo1の方も回答されているように 物理的に異なっていなければI/Oは分散されないからです。WindowsがCやDやEだと思って分散して書いていても 結局物理的に磁気データが記憶されるのは単一の72GB玉ディスク1つなのでそこでI/Oネックが発生してしまいます。 ですのでディスクI/O性能を向上させようとすると できるだけ数多くの物理ディスクに分散して データファイルを配置した方が基本的には速くなります。 ただ、数多くの物理ディスクに配置するということは逆に障害に遭う確立もそれだけ高くなるわけですから信頼性は落ちてしまいます。 最近のディスクは信頼性も非常に高く、RAID、ホットスペアなどの技術により完全にアクセスができなくなることはほとんど無いため回答者2の方が記述されているように「RAIDを組んだボリュームに無作為に放り込む」ことが多いです。 この手法をSAME(Striping And Mirroring Everything)と読んだりします。 RAID 0+1(信頼性と性能を兼ね備えたRAID構成)から構成された1つの論理ディスクを用意してOSに見せておき、何でもかんでもその中に放り込んでしまえという考え方です。
今のご時世ですと、RAIDを組んだボリュームに無作為に放り込む方がよろしいかと思います。(中小規模の案件の場合限定ですが)耐障害性を考慮しつつI/O分散を計るのは、コスト的にかなり無理があります。 コストより性能重視な大規模案件でしたら、そのあたりの設計が出来ない時点で無理があるので、ベンダー等に協力を依頼されるべきかと。