DB/Oracle/物理設計メモ

Top / DB / Oracle / 物理設計メモ

目次

物理設計って難しいよね。どこから考えればいいのやら。

表領域の設計

データブロックサイズ

2k、4k、8k、16k、32k。ディスクとメモリとの I/O の単位がブロックになるので、表領域の使われ方によってアクセス効率を考えた設計が必要。

例えば、OLTP のようにランダムアクセスを大量にさばく必要がある場合、不要なデータまでメモリに持ってこなくても済むように、ブロックサイズは小さくした方がいい。たぶん。逆に DWH 的用途の場合はまとめてがばっと持ってこられた方が良いので、大きくした方がいい。のだと思う。

具体的なサイズは一行あたりのデータ量によるのかな。

データブロックを小さくすると、全データ量に対するブロックヘッダの割合は増える。

エクステント管理

autoallocate にするか、uniform にするか。

エクステント内のデータブロックは連続していることが保証されているけれど、セグメント内のエクステントは、連続していることは保証されない。例えば 10M の表のエクステントサイズを均一で 64k にした場合、セグメントとしては物理的にフラグメントが発生する可能性があるわけで、そうすると物理 I/O のアクセス効率は悪くなる。

autoallocate の場合、エクステントのサイズも個数も不確定。ディスク内に様々なサイズのエクステントが散在することになり、結果的にアクセス効率は悪くなる。uniform にすればディスク内の物理配置はある程度整理されることになるのでアクセス効率はいいけれど、たった 1k のデータを格納するのにも例えば 1M まとめて取られてしまうとか、使用効率は下がる可能性はあるね。

全体的なこと

どの表領域にどの表を置くか。どの程度のサイズになるのか。バックアップの頻度、耐障害性など。いろいろ。いろいろいろいろ。

UNDO 表領域、一時表領域

どの程度過去の SQL 文についてまで UNDO を保持するか。また、その保持を保証できるだけのサイズはどの程度か、とか。

表の設計

初期エクステントサイズとか、増分エクステントサイズとか。うーん……。


Last-modified: 2011-11-02 (水) 11:32:32 (2454d)