共有カーソルによるSQLパフォーマンスの改善
通常のアプリケーションでは、類似したSQL文が繰り返し実行されています。Oracleデータベースには共有カーソルが 装備されており、同じ文を実行しているアプリケーション・プロセスがコンパイル済みの文を共有することを可能にします。 これにより、メモリーおよびCPU使用率が減少してデータベース・サーバーのスループットが改善されます。 そして、解析にかかる時間が削減することによって応答時間が短縮され、ラッチの競合が減少することによって スケーラビリティが向上します。しかし、類似していて同じ実行計画を持っていても共有されない文があります。
cursor_sharing パラメータは、このような文のカーソルの共有を可能にします。
次に、共有カーソルによってパフォーマンスが飛躍的に改善される文の例を示します。
INSERT INTO T VALUES(1, ’foo’, 4)
INSERT INTO T VALUES(2, ’bar’, 7)
上記の2つの文は、デフォルトでは同じカーソルを共有しませんが、同じ実行計画を持っています。カーソルが共有されない のは、これらの文のリテラルが異なるためです。
cursor_sharing は内部でリテラルをバインドで置き換えることによって これら2つの文のカーソルを共有できるようにし、SQLのパフォーマンスを大幅に改善します。
cursor_sharing は動的システム・パラメータで、類似した文のカーソル共有をできる限り可能することによってSQLの パフォーマンスを改善します。
cursor_sharing をSIMILARまたはFORCEに設定すると、Oracleは完全に一致するテキストを 持つカーソルが見つからない場合に、類似した文のテキストを持つカーソルを検索します。
|