8.4 SQLに関するチューニング

TASKTM情報およびシステム統計情報を基に,次の表に示す項目を確認してチューニングを実施してください。

表8-5 SQLに関するチューニングで確認する項目

項番確認項目原因対策
1検索行数または更新行数に対して,ページ要求回数が多くないかインデクスで検索対象とする行が絞り込まれていないことが考えられます。表にインデクスが定義されていない場合は,インデクスの定義を検討してください。表にインデクスが定義されている場合は,インデクス構成列に対して,検索対象とする行を絞り込む条件を指定することを検討してください。検索時に使用されるインデクスについては,「3.3.1(1)(c)データをソートするときに使う」および「4.3 SQLの最適化」を参照してください。
2作業表が作成されていないかソート処理を行うときに作業表が作成されています。ソート処理を代用するためのインデクスを定義することを検討してください。ソート処理とインデクスの関係については,「3.3 インデクスの設計」を参照してください。
また,作業表を作成するSQLについては,「4.3.4 作業表を作成するSQL」を参照してください。
3表定義プールのヒット率が低いため,表定義プールから掃き出された表定義情報の数が多くないかSQLの前処理で必要な表定義情報が表定義プールに保存されていないため,表定義プールから表定義情報が掃き出されていることが考えられます。表定義プールサイズ(xdb_tabledefpool_sizeオペランドの指定値)を大きくすることを検討してください。表定義プールサイズの見積もりについては,「4.2.2 表定義プールサイズの見積もり」を参照してください。
4SQLプールのヒット率が低く,SQLプールから掃き出されたSQLの前処理結果の数が多くないかSQLプール機能を効果的に使用していない可能性があります。
発行するSQLの種類が多く,それらのSQLが順番に循環して発行されているため,掃き出しと保存が繰り返されていることが考えられます。
次に示す対処をしてください。
  • 構文が同じSQLの,SQLテキストの長さ,空白の位置や数などが一致しているかを見直してください。
  • SQLプールサイズ(xdb_sqlpool_sizeオペランドの指定値)を大きくすることを検討してください。
詳細については,「4.1 SQLプール機能」を参照してください。
5SQLプールの動的確保が発生していないかSQLプールが不足していると考えられます。SQLプールの動的確保によって保存されたSQLの前処理結果は,再利用対象になりません。SQLプールサイズ(xdb_sqlpool_sizeオペランドの指定値)を大きくすることを検討してください。
SQLプールサイズの見積もりについては,「4.1.3 SQLプールサイズの見積もり」を参照してください。