前回は、表領域の分割方針について書きました。
今回は、表領域の管理方式について書いてみます。


まず、表領域の管理方式は、大きく以下の2つに分かれます。


・ローカル管理表領域
・ディクショナリ管理表領域


これらの特性、概要については、毎度おなじみとなりましたが、
以下のサイトを参照下さい。「第2章 ローカル管理表領域」
http://otndnld.oracle.co.jp/skillup/oracle9i/2_1/index.html


ローカル管理表領域は、8iから採用され、9iでデフォルトの方式となりました。
私が9iの案件をやり始めた頃は、慣れ親しんだディクショナリ管理表領域を
採用していたケースがほとんどでした。


どんな新機能もそうですが、安定するまでは採用するのには勇気がいります。
(結構bugが・・・10gもR2が出ないと、提案するにはちょっと勇気が・・・)


9iもR2が出た頃になると、ローカル管理表領域が主流になってきました。
(私の知っている範囲の話ですが)

パフォーマンスが良くなったという事は、あまり実感した事はありませんが、
管理面でのメリットが大きい為、私もすっかりローカル管理派になりました。


さてさて、ローカル管理表領域には、エクステントの管理方式には、

2つの方式があります。
UNIFORM(エクステントサイズ固定)方式と、

AUTO ALLOCATE(Oracleによる自動管理)です。


双方メリット、デメリットがあるのですが、私の最近のお気に入りは、

UNIFORM方式です。

前述のサイトに記載がありますが、領域の無駄が多少発生しますが、

断片化の発生を防止できます。

デメリットである領域の無駄を発生させない為には、UNIFORMサイズを

小さくしてやれば良いのですが、これでは、大きなオブジェクトの場合に、

エクステント数が膨大になってしまい、パフォーマンスへ影響が

生じる可能性があります。


私は、UNIFORMサイズの異なる表領域を複数作成する事によって、
領域の無駄と、エクステント数の増加を極力防止するような方針を薦めています。

具体的には、以下のような感じになります。


表領域A(UNIFORM:  1MB)・・・ 100MB未満のオブジェクト格納用表領域
表領域B(UNIFORM: 10MB)・・・ 101~1GBのオブジェクト格納用表領域
表領域C(UNIFORM:100MB)・・・ 1GBを超えるオブジェクト格納用表領域


このようにすれば、デメリットの面をカバーできます。


前回の(その1)の方式と合わせると、


業務種別毎に分割して、さらにオブジェクトのサイズ種別で分割する


という方式になります。

この方式は、結構悪くない方式だと思っています。

当然、顧客要件に応じて、分割方針、管理方式は、その都度検討するので、
上記と異なる方針にする事はあります。


ここに書いたのは、あくまでも1例のお話です。

少しでも読んだ方の参考になれば嬉しいなと思います。

以上でユーザデータ表領域設計に関するお話は終了です。