• 検索結果がありません。

その他のチューニング

ドキュメント内 チューニングガイド (ページ 33-37)

第4章 チューニング

4.7 その他のチューニング

その他の原因によるチューニングについて説明します。

4.7.1 CASTを使用したSQL文のチューニング

CASTオペランドにインデックス構成列を指定して、インデックスの範囲検索を行いたい場合があります。最適化パラメ タ“SCAN_KEY_CAST”で、インデックス検索の適用を拡大することで、CASTオペランドについてもインデックスの範囲 検索を行います。

範囲検索のチューニング

以下の場合、チューニングの効果があります。

- WHERE句または結合表の結合条件に、CASTに指定した列と、列を含まない値式を比較述語“=”で指定してい

る場合。

インデックス定義

人事テーブル.IX1<従業員番号> 従業員番号:DEC(6)

SELECT 等級 FROM 人事テーブル

WHERE CAST(従業員番号 AS CHAR(8)) = '123456'

ジョインのチューニング

以下の場合、チューニングの効果があります。

- WHERE句または結合表の結合条件に、表の列同士を比較演算子“=”で指定した条件(表の結合関係を表す条

件)を指定している。かつ、

- 上記の条件の比較演算子“=”で指定した片方または両方の列をCASTオペランドに指定している場合。

インデックス定義

人事テーブル.IX1<従業員番号> 従業員番号:DEC(6) 目標管理テーブル.IX2<従業員番号> 従業員番号:INTEGER SELECT 人事テーブル.従業員名,目標管理テーブル.難易度

FROM 人事テーブル,目標管理テーブル

WHERE 人事テーブル.従業員番号

= CAST(目標管理テーブル.従業員番号 AS DEC(6))

4.7.2 トランザクション占有のチューニング

アクセスプランを取得すると、データベース資源(DSO)に対する占有単位、占有モードを知ることができます。競合するア プリケーションの占有単位および占有モードを確認して、デッドロックの発生の可能性が高い場合には、トランザクション 占有のチューニングを実施します。

カーソルの更新可能性句にFOR UPDATEを指定する

カーソルを使用してデータベースの更新を行う場合、カーソルの更新可能性句にFOR UPDATEを指定すると、占有 モードは非共用モードとなります。読み込み時から非共用モードでデータベース資源を占有するため、デッドロックが 発生しにくくなります。

占有単位のチューニング

アクセスプランの占有範囲が“DSI”となっている場合は、表の全件検索やインデックスの全件検索が選択されていま す。DSI全体を占有したくない場合は、検索に利用できるインデックスを定義して、データベースの読込み範囲を小さ くします。

なお、占有単位に“REC”が表示されている場合は、行単位の排他を指定している場合です。このときのアクセスモデ ルが表の全件検索であると、占有のためにレコード件数に比例したメモリを使用するため、表の全件検索とならない ようにデータベースをチューニングしなければなりません。

UPDATE文:探索またはDELETE文:探索の検索パスの占有モード

UPDATE文:探索やDELETE文:探索において、更新対象レコードを位置づける部分の表の占有モードは“共用モード”

がデフォルトです。OLTP業務などでUPDATE文:探索やDELETE文:探索を利用するときは、USQL_LOCKに“EX”を 指定すると、更新対象レコードを位置づけるときに“非共用モード”で占有するので、デッドロックを起こしにくくなります。

付録 A 性能チューニングのためのパラメタ一覧

本章では、性能チューニングのためのパラメタを説明します。

ドキュメント内 チューニングガイド (ページ 33-37)

関連したドキュメント