同時に大量のトランザクションが実行されるようなシステムでは、パフォーマンスの劣化の原因として、表や索引のデータブロックで、ITL(Interested Transaction List)の競合が発生している場合も考えられます。ITLとは、各データブロック内に保持されるトランザクション情報のことで、ブロックを変更するトランザクションは、最初にITLを割り当てる必要があります。ITLが不足した場合、MAXTRANSの値まで自動的に拡張されますが、空き領域がないなどの理由により拡張できない場合、トランザクションはITLが獲得できるまで待機することになります。
ITLの個数はオブジェクト作成時の「INITRANS」パラメータによって決まり、最大値はブロック・サイズに依存します。StatsPackやv$segment_statisticsビューにより、ITLの競合が多発していることが確認できた場合には、PCTFREEやINITRANSの調整を検討します。
ブロック・サイズ | ITLの最大値 |
---|---|
2K | 41 |
4K | 84 |
8K | 169 |
16K | 255 |
32K | 255 |
図12 ITLの競合による待機とブロック・サイズごとのITLの最大値 |
索引を作成時、列名の後にDESCオプションを指定することができます。逆キー索引のREVERSEオプションと似たようなイメージを想像させる単語ですが、実際には索引のデータを降順(デフォルトは昇順)に格納するオプションになります。DESCオプションを指定した索引はファンクション索引扱いになるので、先に説明したファンクション索引の設定と同一の設定が必要になります。
今回までは索引を使用したチューニング・テクニックを説明しました。次回からは、結合に関するチューニング・テクニックを紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.