プロが教える店舗&オフィスのセキュリティ対策術

ORACLEでCREATE TABLE文を実行する時の領域の計算方法
について教えてください。

サンプル
PCTFREE 10 PCTUSED 80
STORAGE (INITIAL 2000K
NEXT 1000K
MINEXTENTS 1
MAXEXTENTS 120
PCTINCREASE 0); で

INITIAL は初期値で
NEXTは増分値
MINEXTENTSは拡張最小回数
MAXEXTENTSは拡張最大回数

PCTINCREASEは良くわかりませんが、0にしておけば問題ないと書いてありました。
PCTFREE、PCTUSEDは良くわかりません。

テーブルを作成する時に1レコードのバイト数と、必要件数は分かります。

計算方法としては、1レコードのバイト数×必要件数を単純に計算すればよろしいのでしょうか?
増分値はあふれた場合に1回に拡張する値を指定すればいいのでしょうか?
あと、MAXEXTENTSは最大増分回数は意味があっていれば理解できますが、MINEXTENTSを指定する理由がわかりません。
PCTFREE、PCTUSEDは良く分かりません。通常はどんな値を指定するのでしょうか?

その他、テーブルを作成するにあたり注意するべき点が
ありましたら、ご指摘ください。
また、関連するURLがありましたら、教えてください。

よろしくお願いいたします。

A 回答 (1件)

こんにちわ。



> PCTINCREASEは良くわかりませんが、0にしておけば
> 問題ないと書いてありました。
その方が票領域のフラグメンテーションが発生
しにくいですね。
PCTINCREASE は、エクステントサイズの増加率です。
例えば先のサンプルで、PCTINCREASE=50 と設定してあると、
第1エクステントサイズ=INITIAL=2000K
第2エクステントサイズ=NEXT=1000K
第3エクステントサイズ=NEXT*1.5=1500K
第4エクステントサイズ=NEXT*1.5*1.5=2250K
となります。

> PCTFREE、PCTUSEDは良くわかりません。
PCTFREE は、UPDATE 文でデータ長が増えることを想定して、
予め確保しておく予備領域の割合です。
→ つまり、最初のINSERT 文でデータを投入する際には、
  各ブロックにPCTFREE (%) 分の空き領域が取られます。

PCTUSED は逆にデータが削除されていった時に、
ブロック内のデータ使用率がPCTUSED (%) を下回るまで
新しい行が追加されないと言う指定です。

PCTFREE/PCTUSED については、管理者ガイドに説明があります。
ユーザ登録が必要ですが、OTN Japan でPDF 形式のマニュアルを
公開していますので、こちらでDownload されてはいかがでしょうか?

> 計算方法としては、1レコードのバイト数×必要件数を単純に
> 計算すればよろしいのでしょうか?
まずは、各データブロックには、管理用の領域とPCTFREE 分の
空き領域が取られます。
管理用の領域は、Oracle のバージョンによっても異なりますが、
100Byte 前後と思ってください。
(管理領域よりも、PCTFREE とかの方が影響が大きいので)
(ブロックサイズ - 管理領域) * (1-(PCTFREE/100))
がデータを格納できる領域サイズです。
領域サイズが分かったら、1ブロックに何レコード格納
できるか計算して下さい。
1ブロックに格納できるレコード数が分かったところで、
最終的なレコード数から必要なブロック数を求めます。

> 増分値はあふれた場合に1回に拡張する値を
> 指定すればいいのでしょうか?
INITIAL エクステントに収まりきれなかった時に、次に獲得する
エクステントサイズを指定します。

> MINEXTENTSを指定する理由がわかりません。
運用を開始してから、動的エクステントの拡張が起きないように
事前に必要なエクステントを獲得しておくために指定します。
Oracle には、1つのエクステントサイズが2GB を超えられない
と言う制限がありますので、大規模表ではこれを指定して
事前にエクステントを割り当ててしまいます。

> PCTFREE、PCTUSEDは良く分かりません。
> 通常はどんな値を指定するのでしょうか?
表の性質によって違いますので、詳しくはマニュアル
で確認して下さい。

> その他、テーブルを作成するにあたり注意するべき点が
> ありましたら、ご指摘ください。
INITRANS, MASTRANS, FREELISTS, FREELIST GROUPS
等のパラメータがあります。
こちらもマニュアルで確認してみて下さい。

参考URL:http://otn.oracle.co.jp/
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お礼が遅れて申し訳ありません。
PCTINCREASE、PCTFREE、PCTUSED等、
かなり理解でしました。
本屋さんにも行っていろいろと立ち読みもして
だいぶ分かってきました。

分かりやすい長文のご回答、
大変ありがとうございました。
感謝いたします。

お礼日時:2003/09/25 12:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す