索引の使い分けでパフォーマンスを向上できるケースOracle SQLチューニング講座(9)(4/4 ページ)

» 2005年02月19日 00時00分 公開
[倉田寛正株式会社アゲハ]
前のページへ 1|2|3|4       

ITLの競合を回避する

 同時に大量のトランザクションが実行されるようなシステムでは、パフォーマンスの劣化の原因として、表や索引のデータブロックで、ITL(Interested Transaction List)の競合が発生している場合も考えられます。ITLとは、各データブロック内に保持されるトランザクション情報のことで、ブロックを変更するトランザクションは、最初にITLを割り当てる必要があります。ITLが不足した場合、MAXTRANSの値まで自動的に拡張されますが、空き領域がないなどの理由により拡張できない場合、トランザクションはITLが獲得できるまで待機することになります。

 ITLの個数はオブジェクト作成時の「INITRANS」パラメータによって決まり、最大値はブロック・サイズに依存します。StatsPackやv$segment_statisticsビューにより、ITLの競合が多発していることが確認できた場合には、PCTFREEやINITRANSの調整を検討します。

ITLの競合による待機とブロック・サイズごとのITLの最大値
ブロック・サイズ ITLの最大値
2K 41
4K 84
8K 169
16K 255
32K 255
図12 ITLの競合による待機とブロック・サイズごとのITLの最大値

索引作成時のDESCオプションについて

 索引を作成時、列名の後にDESCオプションを指定することができます。逆キー索引のREVERSEオプションと似たようなイメージを想像させる単語ですが、実際には索引のデータを降順(デフォルトは昇順)に格納するオプションになります。DESCオプションを指定した索引はファンクション索引扱いになるので、先に説明したファンクション索引の設定と同一の設定が必要になります。


 今回までは索引を使用したチューニング・テクニックを説明しました。次回からは、結合に関するチューニング・テクニックを紹介します。


前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。