A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
前回の回答にも、書きましたが、PCTFREE、PCTUSEは、テーブルのデータに対し、Updateを使うかどうかによります。
補足の文面をそのまま取りますと、Updateはほとんど影響ないことになりますので(今週のデータを先週のデータに変更する作業が、NULLが入っている列にフラグ用に何かデータを入れるという作業でない場合)、そのような場合、PCTFREEはできるだけ小さく、PCTUSEはできるだけ大きくとるのが、パフォーマンス的には良いことになりますので、PCTFREEには5ぐらい、PCTUSEは90くらいをお勧めします。(Oracleの仕様で、PCTFREE+PCTUSE<100という決まりがありますので気をつけてください)あと、先週のデータを削除し、今週のデータを先週のデータに変更し、新たに今週のデータを追加するという作業の流れを見ると、全体のデータ量はほぼ変わらないと考えられます。となると、エクステントの大きさは変わらない事になりますので、PCTINCREASEの値はどうでもいいということになります。
このような感じで如何でしょうか?
No.1
- 回答日時:
PCTFREEですが、たとえば、Varchar2の列があるテーブルの場合、最初にInsertするときに、Varchar2の列にNULLを入れ、後でUpdateしたいときがあるとします。
そのときに、Oracleでは、できるだけ同じオラクルブロック(Windowsでいうとクラスタ、HDDでいうとセクター)に後でUpdateした内容を入れようとするのですが、オラクルブロック内に空きスペースがないと、別のオラクルブロックに入れてしまいますので、データの断片化が起こることになります。それを避けるために、あらかじめ、Update用にスペースを空けておきます。この空けておくスペースの%表示がPCTFREEです。PCTUSEは、たとえば、ある行を削除すると、オラクルブロックに空きスペースができます。当然空きがあるので、空きスペースを再利用するのですが、その際利用を開始するオラクルブロックの%表示が、PCTUSEです。
PCTINCREASEは、Oracleでは、いくつかのオラクルブロックをまとめてエクステントという単位で、記憶容量を増やしたり管理したりします。当初、テーブルを設計する際に、データ容量の見積もりをきっちり行い、その容量分だけエクステントをちゃんと作っておけばこのパラメータは不要ですが、見積もりができないときなどは、記憶容量を自動で増やしてもらえるように、設定します。その際に、最初に確保する量(INITIAL句)、その領域が足らなくなったときに増やす量(NEXT句)は、直接数字を指定するのですが、その次に増やす量は、NEXTの数字から増やす量を計算させることができます。これを指定するのがPCTINCREASEです。つまりNEXTで指定した量を増やした領域が足らなくなったとき、NEXTで指定した量×(100+PCTINCREASE)/100を増やします。(増やす量を%表示したことになりますね)その次に増やすのは、前回増やした量×(100+PCTINCREASE)/100で増やす量は、PCTINCREASEずつ増えていくことになります。ただし、PCTINCREASEに0以外を指定すると、記憶領域に断片化につながりますので、注意が必要です。
気をつける点ですが、PCTFREE、PCTUSEは、UPDATEがほとんどないテーブルの場合は、PCTFREEに5ぐらい、PCTUSEにできるだけ大きな数字を使うとほんの少しですが、パフォーマンスが良くなります。Updateが頻繁で、Varchar2が多いテーブルは、PCTFREEを大きめの数字、PCTUSEを少し小さめの数字を使うと断片化を抑えることができます。PCTINCREASEは容量計算をしっかりしてやり、0で使うのが理想です。
ただ、最初は分からないので、デフォルト値でもいいと思います。
この回答への補足
大変詳しいご回答ありがとうございます。
大変恐縮ですが、もう少し相談に乗ってください。
私が作成するテーブルの使用目的は、
そのテーブルには、前週データ(A)と今週データ(B)があります。
それぞれ、前週・今週をあらわすコードをもっています。
毎週データの更新があり、以下のような処理を行います。
1、前週データ(A)を削除
2、今週データ(B)を前週コード
3、新たに、今週データ(C)を今週データをつけてテーブルにINSERT
こういった処理を行う場合、PCTFREE、PCTUSE、PCTFREEは
どういった値を与えたらよろしいでしょうか?
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
ORACLEでの領域計算
その他(データベース)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
MS Accessを共有した際にファイ...
-
別のデータベースのデータを利...
-
Load Data INFILE構文について
-
accessでレコード更新直後の反...
-
1つのSQL文で文字列を置換する...
-
このISAMでは、リンクテーブル・・
-
SQL Server とaccess この認識...
-
男性と2人で飲食店に行きテーブ...
-
MySQL8にバージョンアップした...
-
コンボボックスにレコードセッ...
-
まるいテーブル 円い 丸い 漢字...
-
「テーブルに座って……」という...
-
飲み会で、座敷orテーブルどち...
-
バイキングのトレーの形
-
L2SWはARPテーブルを持っている?
-
SELECT 文の NULL列は?
-
SQLでSUMなどの関数でデータが...
-
SQLで複数列のデータを複数行に...
-
テーブル名をカラムとして取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
accessでレコード更新直後の反...
-
マテリアライズドビューとスナ...
-
ビューのソートについて
-
住所のDBテーブル、マスターの...
-
構文エラー : 演算子がありませ...
-
処理の途中で停止させ、再開さ...
-
Accessでレコード削除ができな...
-
「クリップボードにコピーされ...
-
Oracleで上書きImportはできま...
-
ACCESSで容量が50MBになった...
-
ERROR1062:Duplicate entry.......
-
結合テーブルでINSERTする方法...
-
IF NOT EXISTを使用するINSERT文
-
重複クエリを使ったデータ削除
-
MS Accessを共有した際にファイ...
おすすめ情報