ロール・バックセグメントに関する検証 その3

~ロールバックセグメントに関する検証 その3 ~
ペンネーム ちゃむ

前回は、プライベート・ロールバック・セグメントの使用される順番に関して
説明した。

今回は、TRANSACTIONS_PER_ROLLBACK_SEGMENTに関して掘り下げて調べていきた
いと思う。

TRANSACTIONS_PER_ROLLBACK_SEGMENT

マニュアルには以下のように書いてある。

----------------------------------------------------------------------
TRANSACTIONS_PER_ROLLBACK_SEGMENT には、各ロールバック・セグメントを処
理する同時トランザクションの数を指定します。起動時に取得されるロールバ
ック・セグメントの最小数は、TRANSACTIONS をこのパラメータの値で割った数
です。たとえば、TRANSACTIONS が101でこのパラメータが10 の場合、取得され
るロールバック・セグメントの最小数は101/10 となり、11 に切り上げられます。
ロールバック・セグメントをROLLBACK_SEGMENTS パラメータに指定すると、より
多くのロールバック・セグメントを取得できます。
----------------------------------------------------------------------

この中で記述されていることを元に、以下のことを実際に調べてみようと思う。

1.CEIL(TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)の値とどのよう
に関連して、パブリック・ロールバック・セグメントが起動されるのか?
(CEIL(A)ならA以上の最小の整数)

2.TRANSACTIONS_PER_ROLLBACK_SEGMENTで指定した数だけ、各ロールバック・
セグメントで同時トランザクションを処理できるのかどうか?

1.の検証

1_1.

パブリック・ロールバック・セグメントを50個作成する。
以下は、検証生活ではお馴染み「POPSQL」のスクリプト。

-----------------------POPSQLのスクリプト-----------------------
CONNECT SYSTEM/MANAGER
LOOP (I=1; I SHOW PARAMETER TRANSACTIONS
[/jva]
<pre>
NAME                                 TYPE    VALUE
------------------------------------ ------- ----------------
transactions                         integer 126
transactions_per_rollback_segment    integer 4
</pre>
プライベート・ロールバック・セグメントは、以下のような指定で起動されて
いる。

(rb_test1,rb_test2,rb_find50 ⇒ 3つのロールバック・セグメントを指定)

ロールバック・セグメントは、100個までonlineにできるように指定しておく。

1_3.

この状態でデータベースを再起動し、以下のSELECT文でロールバック・セグメ
ントの状態を確認する。

CEIL(TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)
   = CEIL(126/4)=CEIL(31.5)=32である。

これは、上記のONLINEのロールバック・セグメントの合計数と一致する。

つまり、
CEIL(TRANSACTIONS/TRANSACTIONS_PER_ROLLBACK_SEGMENT)
         - 初期化パラメータROLLBACK_SEGMENTSで指定した個数
=32-3=29

ということで、29個のパブリック・ロールバック・セグメントが起動されたの
である。

最後に、パブリック・ロールバック・セグメントをdropしておこう。
(offlineにしておかないとdropできないので注意!!)

-----------------------POPSQLのスクリプト-------------------------
CONNECT SYSTEM/MANAGER
LOOP (I=1; I<=50; I++)
     SQL alter rollback segment rb_pubI offline ;
     SQL drop  rollback segment rb_pubI ;
ENDLOOP
------------------------------------------------------------------

次回は、2.について検証する。

以上 さわやかな潮風を感じながら 茅ヶ崎にて