2011年3月7日月曜日

autoextendについてちょっと検証

autoextend について確認してみた。

このパラメータは表領域の作成の際に指定するパラメータで、いわゆる自動拡張を採用するかどうかを決定する属性となっている。
自分が気になったのは、nextのサイズを変更するとどれくらいパフォーマンスに影響がでるのか確認をしたかった。
というか、そもそもは"data file init write"待機イベントがどう変化するかをみてみたい!!

今回実行するinsertスクリプトを実行すると700M程度のセグメントサイズとなる。
  • 環境 oracle 11gR2(11.2.0.1) on Linux
  • 以下のパラメータで表領域を作成する
  1. size 10M autoextend on next 1M
  2. size 10M autoextend on next 100M
  3. size 10M autoextend on next 1G
  4. size 1G
  • 以下の表を作成
    SQL> create table hoge (c1 number,c2 char(2000),c3 char(2000),c4 char(2000)) tablespace hoge;
  • 以下のinsertスクリプトを実行
    <br />declare<br />i number := 0;<br />j number := 0;<br />begin<br />        for i in 1..100000 loop<br />               <br />                insert /* append */ into hoge values (i,'a','b','c');<br />        end loop;<br />--      commit;<br />end;<br />/<br />
  • 結果
  1. SQL> @insert

    PL/SQLプロシージャが正常に完了しました。

    経過: 00:01:52.30
  2. SQL> @insert

    PL/SQLプロシージャが正常に完了しました。

    経過: 00:03:16.03
  3. SQL> @insert

    PL/SQLプロシージャが正常に完了しました。

    経過: 00:03:39.99
  4. SQL> @insert

    PL/SQLプロシージャが正常に完了しました。

    経過: 00:04:07.14
上記の実行時間だけみると実行都度に拡張させたほうが良いようにみえますが、
今回のdata file init write待機をかなり削減できるていることは確認ができました。
※ashviewerでお見せしようと思いましたが断念

つまり、その他の待機が発生しているということです。
たとえば、4のパターンではbuffer busy waitsが発生するようになっていました。

と、思ったら途中でrecovery_file_destがいっぱいになってしまった。。
以下は番外編。
<br />[ora11201d@server132 archivelog]$ du -sh *<br />16K     2011_02_25<br />8.0K    2011_02_26<br />8.0K    2011_02_27<br />8.0K    2011_02_28<br />8.0K    2011_03_01<br />1.5G    2011_03_05<br />154M    2011_03_06<br />2.2G    2011_03_07<br />[ora11201d@server132 archivelog]$ rm -rf *<br />


で、お掃除、お掃除
<br />[ora11201d@server132 archivelog]$ rman target /<br /><br />Recovery Manager: Release 11.2.0.1.0 - Production on 月 3月 7 20:24:30 2011<br /><br />Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.<br /><br />ターゲット・データベース: ORA11201 (データベースID=1446091489)に接続されました<br /><br />RMAN> crosscheck archivelog all;<br /><br />リカバリ・カタログのかわりにターゲット・データベース制御ファイルを使用しています<br />チャネル: ORA_DISK_1が割り当てられました<br />チャネルORA_DISK_1: SID=47 デバイス・タイプ=DISK<br />アーカイブ・ログの検証に失敗しました<br />アーカイブ・ログ・ファイル名=/home/ora11201d/app/oracle/flash_recovery_area/ORA11201D/archivelog/2011_03_05/o1_mf_1_678153_6q3kzjw0_.arc レコードID=568 スタンプ=744992389<br />アーカイブ・ログの検証に失敗しました<br /><br />RMAN> delete expired archivelog all;<br /><br />チャネル: ORA_DISK_1がリリースされました<br />チャネル: ORA_DISK_1が割り当てられました<br />チャネルORA_DISK_1: SID=47 デバイス・タイプ=DISK<br />データベースdb_unique_name ORA11201Dのアーカイブ・ログ・コピーのリスト<br /><br />アーカイブ・ログを削除しました<br />アーカイブ・ログ・ファイル名=/home/ora11201d/app/oracle/flash_recovery_area/ORA11201D/archivelog/2011_03_07/o1_mf_1_678240_6q9ho1mp_.arc レコードID=654 スタンプ=745186611<br />88EXPIREDオブジェクトを削除しました<br />

0 件のコメント:

コメントを投稿