
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がありましたら、教えてください。
よろしくお願いいたします。
No.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/
ご回答ありがとうございます。
お礼が遅れて申し訳ありません。
PCTINCREASE、PCTFREE、PCTUSED等、
かなり理解でしました。
本屋さんにも行っていろいろと立ち読みもして
だいぶ分かってきました。
分かりやすい長文のご回答、
大変ありがとうございました。
感謝いたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
DBエラーを解決したい
-
Accessを開きなおすとテキスト...
-
半角ハイフンに似た文字
-
汎用カード型のデータベースソ...
-
ポストグレでお聞きしたいです。
-
manana というやつで、間違って...
-
Accessフォームで平均値の出し...
-
データベースの勉強 公務員を目...
-
はじめてのAccess 2019 について
-
ITパスポートについての質問で...
-
マイクロソフトAccessでsqlのas...
-
情報整理するのに、「 Fullfree...
-
レコード数のカウント
-
私はシステム会社に務めている...
-
データベースの選定について 要...
-
ドリームメーカーってどうやっ...
-
Accessのフォームへ、記録者の...
-
エクセル
-
コンピュータ用語、データベー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データを削除しても表領域の使...
-
ORA-00959: 表領域'****'は...
-
Data Pump で大量データインポ...
-
TruncateしたテーブルへのInser...
-
表領域の使用率がもうすぐ100%
-
oracle SYSTEM01.DBF が大きい
-
Oracleはどの程度まで巨大なテ...
-
create table時のINITIALとMAXE...
-
データベースの初期サイズ
-
テーブルのSTORAGE句のサイズ設定
-
運用中のALTER TABLE
-
ORACLEでの領域計算
-
データ削除の方法
-
ディスクサイズの見積もりとは?
-
pgaの最大使用サイズについて
-
オーバーヘッドってなんですか?
-
dba_extentsの考え方について
-
INDEX 見積もりについて
-
表領域の違うEXPORT IMPORT
-
PROCのFETCH結果にごみが。。
おすすめ情報