pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #4 Tweet
実は_pga_max_sizeの扱いがOracle10g R2以降ひっそりと変更されていた!という事実。Season2という後付けのタイトルで後日談を書いておきましたので次いでに見ておくとちょっとは幸せになるかも…
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? Season2 #1
pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? その4回目、
Oracle10g R1 (32bit)で、pga_aggregate_targetを徐々に増加させ、PGAの使われ方がどう変わるかの確認のつづき。
pga_aggregate_targetを10MB、20MBと増加させてきたが、今回は、40MB、そして 4095GBと上限値近くまで増やしてみる。
SYS> alter system flush shared_pool;
システムが変更されました。
SYS> alter system set pga_aggregate_target=40m;
システムが変更されました。
SYS> show parameter pga
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 40M
SYS>
SYS> @pgastat
NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 40
aggregate PGA auto target 22.5527344
global memory bound 2
・・・中略・・・
SCOTT>
SCOTT> -- test #3 _pga_max_size=200m (default) / pga_aggregate_target=40m
SCOTT> @test2
SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 1.92 409993216 409993216
0 order by code
SCOTT>
pga_aggregate_targetを10MB、20MB、40MBと増加させてみたところ、Oracle9i R2までと同じく、pga_aggregate_targetの5%をglobal memory boundとし、その値を上限にオペレーションしていることは確からしい。
次ぎは、_pga_max_sizeパラメータのデフォルト値である200MBを元にしてPGAサイズが決定されるようにしてみる。
pga_aggregate_targetを4095GBにする必要は全くないのだけれどね、ほんとうは。 :)
SYS>
SYS> alter system flush shared_pool;
システムが変更されました。
SYS> alter system set pga_aggregate_target=4095g;
システムが変更されました。
SYS> show parameter pga
NAME TYPE VALUE
------------------------------------ --------------------------------- ------------------------------
_pga_max_size big integer 200M
pga_aggregate_target big integer 4095G
SYS>
SYS> @pgastat
NAME size(MB)
-------------------------------------------------- ----------
aggregate PGA target parameter 4193280
aggregate PGA auto target 3773929.32
global memory bound 100
SYS>
・・・中略・・・
SCOTT>
SCOTT> -- test #4 _pga_max_size=200m (default) / pga_aggregate_target=4095G
SCOTT> @test2
SQL_TEXT OPERATION_TYPE last_mem(MB) LAST_TEMPSEG_SIZE MAX_TEMPSEG_SIZE
---------------------------------------- -------------------- ------------ ----------------- ----------------
select * from code where rownum <= 10000 SORT 97.58 409993216 409993216
0 order by code
SCOTT>
お〜〜〜っと、ここで変化が現れました。
これまでのテストでは、pga_aggregate_targetの5%がglobal memory boundとして調整されていましたが、5%より随分小さい値が設定されています。これもOracle9i R2と同様に、_pga_max_sizeの50%という値が設定されていると考えてよさそう。 pga_aggregate_target * 5% か _pga_max_size * 50% のいずれか小さい方が利用されていますよね。
次回はその辺りをもう少し細かく確認してみよと思います。つづく…
前回までのあらすじ・・・
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #1
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #2
・pga_aggregate_targetでPGA?、_pga_max_sizeでPGA? #3
| 固定リンク | 0


コメント