前回は、表領域の分割方針について書きました。
今回は、表領域の管理方式について書いてみます。
まず、表領域の管理方式は、大きく以下の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例のお話です。
少しでも読んだ方の参考になれば嬉しいなと思います。
以上でユーザデータ表領域設計に関するお話は終了です。