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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- C言語・C++・C# あまりわかりません。 複素数$c$を具体的に定めた複素写像写像$f_c(z)$に対して、原点を含む領 4 2022/10/25 09:17
- 統計学 t検定について教えてください 2 2023/02/23 16:35
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- Visual Basic(VBA) vba 等間隔の列に対しての計算 6 2022/05/17 20:15
- Java Java モンスターブリーダー 1 2023/02/05 09:44
- 中学校 中2女子です。私は最近医者を目指したいと考えているのですが、目指す上でいくつか知りたいことがあります 10 2023/05/09 03:43
- 糖尿病・高血圧・成人病 血液検査の実測値と理論値との相違 1 2022/10/06 09:31
- C言語・C++・C# C言語 3 2022/10/04 15:07
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
テーブルのSTORAGE句のサイズ設定
Oracle
-
NUMBER(N,M) としたときの、格納データサイズ(バイト)
Oracle
-
create table時のINITIALとMAXEXTENTSの決定について
Oracle
-
-
4
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
5
ODP.NETのバージョン確認
Oracle
-
6
シェルスクリプトでFTPの実行結果を取得するには
その他(プログラミング・Web制作)
-
7
pctfreeとPCTUSEDの確認方法について
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データを削除しても表領域の使...
-
Data Pump で大量データインポ...
-
ORA-00959: 表領域'****'は...
-
データ削除の方法
-
データベースの初期サイズ
-
データファイルの縮小
-
create table時のINITIALとMAXE...
-
テーブルのSTORAGE句のサイズ設定
-
NEXT EXTENTのサイズが0
-
INDEX 見積もりについて
-
Access レコードを追加できませ...
-
postgreSQLのint型は桁数指定が...
-
INDEXの無効化
-
他の処理でselectさせないよう...
-
カラムの存在チェック
-
Viewにインデックスは張れ...
-
SQLでスキーマ名(所有者名)の...
-
viewのバックアップ
-
トリガーでロールバックは可能?
-
テーブルからのselectにおいて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
データを削除しても表領域の使...
-
Data Pump で大量データインポ...
-
ORA-00959: 表領域'****'は...
-
表領域の使用率がもうすぐ100%
-
Oracleはどの程度まで巨大なテ...
-
TruncateしたテーブルへのInser...
-
oracle SYSTEM01.DBF が大きい
-
テーブルのSTORAGE句のサイズ設定
-
データ削除の方法
-
データベースの初期サイズ
-
オーバーヘッドってなんですか?
-
create table時のINITIALとMAXE...
-
データファイル情報について
-
Oracle 10g XE CSVからテーブル...
-
ダイレクトパスロードの性能に...
-
USER_SEGMENTの参照について
-
UNDO_RETENTION初期化パラメー...
-
表領域の違うEXPORT IMPORT
-
max_fsm_pagesについて
-
PostgreSQLのテーブルサイズ
おすすめ情報