SOFT PARSEとHARD PARSE

oracleのお話

SQLを実行するときにはまず始めに実行対象のSQLの解析(実行計画の取得)が行われる。

解析の際にライブラリ・キャッシュ上に同じSQLが存在する場合は、キャッシュ上のSQLの実行計画を利用してSQLを実行する。これをSOFT PARSE(ソフト・パース)という。

反対にライブラリ・キャッシュ上に存在しない場合は、

 ①文法チェック

 ②TABLEやカラムのチェック(セマンティクス・チェック)

 ③実行計画の取得

上記の処理をした後にSQLを実行する。これをHARD PARSE(ハード・パース)という。

要はSQLを色々チェック(解析)してから実行するのがHARD PARSEで、キャッシュからチェック済みのSQLとして実行するのがSOFT PARSEである。

実行したSQLが全てライブラリ・キャッシュに登録(共有)されるわけではなく、バインド変数などを利用したSQLが登録される。

HARD PARSEが多くなる(解析処理が多くなる)と負荷がかかり性能劣化の原因となるため、キャッシュに登録されるような文法のSQLを実行することを心掛けるべきである。

以上

この記事が気に入ったらサポートをしてみませんか?