Oracleテーブル作成の最適なパラメータ調査

このQ&Aのポイント
  • Oracleのテーブル作成時に最適なパラメータを調査しています。調査対象は「PCTFREE」「PCTUSED」「INITIAL」「NEXT」「PCTINCREASE」「MAXEXTENTS」です。データ件数は最大で10000件で、月には10000件のINSERT、UPDATE、DELETEが発生します。また、月次バッチで1ヶ月以上前のレコードを削除します。
  • 自分なりに考えたパラメータの値は「PCTFREE」を20、「PCTUSED」を50、「MAXEXTENTS」を4096に設定しましたが、正しい値かどうか不安です。他のパラメータの設定方法も知りたいです。
  • 追加で必要な情報があれば教えて下さい。よろしくお願いします。
回答を見る
  • ベストアンサー

TABLE作成のパラメータ

Oracle勉強中です。皆様の知恵をお貸し下さい。 テーブル作成の最適なパラメータを調査したいと思っています。 調査対象項目は以下です。 「PCTFREE」「PCTUSED」「INITIAL」「NEXT」 「PCTINCREASE」「MAXEXTENTS」 【構成】 DATANO    VARCHAR2(16)  NOT NULL START_DATE  DATE END_DATE   DATE INFO     VARCHAR2(256) ・データ件数…MAX10000件 ・INSERT、UPDATEが月に10000件発生(MAXで) ・DELETEも月に10000件発生(MAXで) ・月次バッチで1ヶ月以上前のレコードを削除 自分なりに出してみたのですが… ・「PCTFREE」→20 更新処理が発生する為 ・「PCTUSED」→50 削除処理が発生する為 ・「MAXEXTENTS」→4096 今後TABLEサイズが大きくならない為にデフォルトを設定(自信ナシです) …正しい値が出せてますでしょうか? 他のパラメータ値の設定方法も合わせてご回答頂ければと思います。 足りない情報等、ご指摘頂ければ補足致します。 よろしくお願いします。

  • Oracle
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • joih
  • ベストアンサー率35% (37/105)
回答No.1

回答ついてないので。 10,000件程度であれば、特に心配する必要はないと思います。 勉強をかねているのであれば、このへんはわかりやすいですね。 http://biz.rivus.jp/pctfree_and_pctused.html http://www.seshop.com/se/edu/shikaku/omo/miti/miti_gold12.asp 個人的な印象としては、PCTFREE や PCTUSED をいじって調整する必要があるテーブルは、 ・項目がたくさんあり、ガンガン更新される ・レコード長がイヤになるほど長いが更新はめったに発生しない など、使用の仕方が偏っているテーブルで件数が非常に多いテーブルだと思います。 領域使用率をいじって性能の違いを測ったことがないので、この考えで間違いないかといわれると自信はありません。 MAXEXTENTS については、デフォルトのままでいいと思います。TABLEサイズを決める際、可能であれば実際にデータを入れてみてそのサイズの 1.2~1.7倍くらいを INITIAL として取るといいと思います。 NEXT は適当で。 PCTINCREASEは 0固定で。

hiropiro_n
質問者

お礼

回答ありがとうございました。 まだまだ勉強中の身で、習得しなきゃいけない知識が沢山あって大変です。。。

関連するQ&A

  • ORACLEでの領域計算

    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がありましたら、教えてください。 よろしくお願いいたします。

  • oracle表領域作成の際に使用するオプション

    以下の(1)~(9)オプションの意味を、ORACLE初心者でも理解できるレベルで教えていただけないでしょうか? (1)tablespace AAAAAAAAA =表領域名 (2)pctfree 10 =この割合を超えるとブロックに挿入不可能になる。 (3)pctused 80 =用済領域のうち、データブロックごとに確保される最小限の割合。この割合を下回ると挿入可能な ブロックとなる。 (4)initrans 1 (5)storage( (6)initial 1M (7)next 1M (8)maxextents UNLIMITED (9)pctincrease 0 ) 自分で調べてはみたものの、理解できませんでした。 わがままな質問で申し訳ございません。 ご教授願います。

  • CreateTableのオプション確認方法

    以下のCREATE文を実行し、設定されたオプションが正しく設定されていることを確認したいのですが、確認方法がわかりません。どうかご教授願います。 以下のSQLで確認した結果、PCT_USED等が表示されませんでした。 このSQLで上記を確認できる場合、表示されない項目は何か理由があるのでしょうか? ---------------------------------------------------------------- 確認SQL SELECT OWNER ,TABLE_NAME ,TABLESPACE_NAME ,PCT_FREE ,PCT_USED ,INI_TRANS ,INITIAL_EXTENT ,NEXT_EXTENT ,MAX_EXTENTS ,PCT_INCREASE FROM dba_tables ----------------------------------- CREATE TABLE free_table( old_name VARCHAR2(5), new_name VARCHAR2(5) ) tablespace TESTDAT01 pctfree 20 pctused 70 initrans 1 storage( initial 1M next 1M maxextents UNLIMITED pctincrease 0 ) ---------------------------------- 確認したい値 tablespace TESTDAT01 pctfree 20 pctused 70 initrans 1 storage( initial 1M next 1M maxextents UNLIMITED pctincrease 0 ------------------------------ どうかご教授よろしくお願いします。

  • Oracle8iのBLOBに画像を登録する方法

    お世話になります。 現在以下のテーブルに画像を取り込むことを行っているのですが、SQL/PLUS等のコマンドで登録する場合どのようなコマンドになるでしょうか? CREATE TABLE Book (No Number(2) NOT NULL, BookName Varchar2(100) NOT NULL, BookAuthor Varchar2(100) NOT NULL, Genre Number(2) NOT NULL, image BLOB, constraint pk_Books primary key(No))TABLESPACE usertsp PCTFREE 5 PCTUSED 90 STORAGE(INITIAL 10k NEXT 1k PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS UNLIMITED); BLOB型のフィールド(image)に画像を取り込む方法をご存知の方 よろしくお願いします。

  • ORACLEのインデックスについて

    現在、ORACLE9を使用しているのですが INDEXについて理解できないことがあったので 教えてください。 組織、社員という2つしか項目を持たない 従業員という表があり600件ほどのデータがあります。 変更前は、 ・組織、社員にユニークインデックスは作成されていた。 ・600件ほどのデータの組織は全て同一。 となっており、その状態で select * from 従業員 where 組織 = 'ALL' and 社員 = '001' を流すとFULL SCANになっていました。 FULL SCANを回避できないかと思い、社員のみのインデックスを 追加し(* 一番下にインデックス追加時のSQLをはっています)  select * from 従業員 where 組織 = 'ALL' and 社員 = '001' を流すと追加したインデックスを読んでいました。 既に作成されていたユニークインデックスと異なるインデックスが 追加されたのかと思い、DBA_INDEXESの中を確認しましたが 異なっているのは、 ・UNIQUENESS ・INITIAL_EXTENT(ユニークインデックスは24576、  追加したインデックスは40960) ・LEAF_BLOCKS(ユニークインデックスは3、  追加したインデックスは2) の3点のみでした。 なぜこのような動きになるか理解できず、今後の対応に 迷っています。 ・原因 ・調査したらいい場所 ・参考資料 などがありましたら教えてください。 よろしくお願いします。 (*) インデックス追加時のSQL文は、create index 従業員A on 従業員 (社員) tablespace index storage (initial 40000 next 100000 maxextents unlimited pctincrease 0) pctfree 10となっています。

  • ACCESS パラメータクエリの設定

    ACCESSでデータの抽出をしています。 抽出をしたいキーワードが15個ほどあり、そのつどクエリを作るとかなり時間がかかります。データは(20万件ほどです) そこで本を見たところパラメータクエリというものがあり、早速試してみたのですができません。 テーブル名は”本”です。 フィールド1…番号  フィールド2…雑誌名 フィールド3…著者  フィールド4…JANコード になっています。 私はフィールド2のところで抽出条件として "[雑誌名を入力してください]" と入れました。 後もう一点ですが、同一雑誌でも名前が少し違って登録されているものもあり、重複するデータを抜き出して削除したいのですが、削除分と削除された残りのデータが共に必要です。こういった場合はどう処理するのが妥当でしょうか?削除分は別に保存した上で、不一致クエリを使えば正確にできますか?もっとよい方法がありますか? どうぞよろしくお願いいたします。

  • ネットでホテル予約をするとパラメータエラーになります

    ウィルコム WS020SHでホテルをインターネット予約するとパラメータエラーになってしまいます。以前は同じサイトからでも正常に予約できたのですが。 一度,Internet Explorerを起動して、「メニュー」-「ツール」-「オプション」-「メモリ」タブから「ファイルを削除」処理はしました。その時は正常に戻ったのですが,また同じ症状が発生し,今度はその処置をしても正常に戻りません。 対処法をご存じの方は,宜しくお願いします。

  • CreateTable時のInitialエクステントについて

    以下のようにテーブルスペースとテーブルを作成すると空のテーブルなのにエクステントが2つ発生するのですが、なぜでしょうか? CreateTableではInitialエクステントが1つ発生するだけではないのでしょうか? ご回答をお願いします。 バージョン:Oracle9.2.0.1.0 CREATE TABLESPACE GOMI DATAFILE '/export/home/dbf/user_data_gomi.dbf' SIZE 32M REUSE MINIMUM EXTENT 1K DEFAULT STORAGE ( INITIAL 512K NEXT 512K PCTINCREASE 0 MINEXTENTS 1 ); ========================================= CREATE TABLE GOMI_T ( NAMAE VARCHAR2(60) ) PCTFREE 0 TABLESPACE GOMI STORAGE ( INITIAL 128K NEXT 16K MINEXTENTS 1 ); SQL> L 1 SELECT SUBSTR(SEGMENT_NAME,1,8) "SEGMENT",EXTENT_ID,BYTES,BLOCKS 2 FROM DBA_EXTENTS 3* WHERE TABLESPACE_NAME = 'GOMI' SQL> / SEGMENT EXTENT_ID BYTES BLOCKS ---------------- ---------- ---------- ---------- GOMI_T 0 65536 32 GOMI_T 1 65536 32 ↑エクステントが2つ発生する。

  • Access パラメータの入力をフォームで入力

    いつもお世話になっております。 Accessにて躓いています。宜しくお願い致します。 2万件以上のデータがあります。 データの中から、処理番号(ダブり無し)・年月日・件名の項目のみをクエリで取り出し、処理番号と件名でフォームで検索して表示するという事を行いたいと思います。 以下の手順で一連のものを作成したのですが、検索用フォームに検索したい文字を入れても「パラメータの入力」が出てきてしまい、検索用フォームがうまく働いていない状態です。 理想では「F処理検索」で絞り込みたい文字を各テキストボックスへ入力→検索ボタンをクリック→「処理」で絞り込んだデータを表示 としたいのです。 ~現状~ テーブル ・処理メインデータ(2万件のデータが保管されています) クエリ ・Q処理検索 テーブル「処理メインデータ」を基に左から「処理番号」「年月日」「件名」を充て、抽出条件として、「処理番号」と「件名」にそれぞれ 「Like"*"&[Forms]![F処理検索]![処理番号]&"*"」 「Like"*"&[Forms]![F処理検索]![件名]&"*"」 充てています。 フォーム ・処理(フォームビューで「処理番号・年月日・件名」の結果を出します) ・F処理検索(検索用フォームです。) 処理番号と件名を入力するテキストと、検索を実行する為のボタンを設置しました。 検索ボタンには、 プロパティ内クリック時の対応にマクロを下記の設定でセットしました。 アクション:フォームを開く フォーム名:処理 ビュー:フォームビュー フィル為:Q処理検索 Where条件式:空欄 データモード:空欄 以上、宜しくお願い致します。

  • 有意差検定について

    統計処理は全くの初心者なのですが、以下のデータの処理についてお願いします。 <当施設調査結果(5年間)> 調査期間中の受付伝票 1,050,233 枚 エラーの見つかった件数 12,623 件 エラー発生率 1.20 % <全国大規模調査(1ヶ月間)> 調査期間中の受付伝票 3,087,410 枚 エラーの見つかった件数 76,307 件 エラー発生率 2.47 % 感覚的に、当施設のエラー発生率は明らかに大規模調査に比べて低いと考えられますが、発表したり、ペーパーにする場合有意差の検定が必要と考えます。 この場合の、検定の方法と、文章中の表記方法について教えてください。できましたら、その意味や検定プログラムについてもお教え下さい。 よろしくお願いいたします。