sql >> データベース >  >> RDS >> Oracle

DBMS_STATSを使用したユーザー定義ルーチン、パ​​ートII

    以前、DBMS_STATSを使用したユーザー定義ルーチンに関する投稿がありました。さらに掘り下げた後、これがどのように機能するかを判断しました。データベースに、ユーザー定義型で保存されているデータがあります。ユーザー定義型を使用している場合は、ユーザー定義の統計収集ルーチンをOracle Data Cartridge Interface(ODCI)に関連付けることができます。 ODCIStatsCollectルーチンは、そのユーザー定義タイプを含むテーブルでDBMS_STATSが呼び出されると、自動的に呼び出されます。

    私の場合、CPU使用率が高いことを、サードパーティのアプリケーションベンダーがODCIStatsCollectルーチンに入れた1つのSQLステートメントまで追跡しました。この時点で、それはクエリ調整の問題になります。より少ないCPUを使用するようにクエリを作成するにはどうすればよいですか?問題を調べた後、サブクエリを取り出して結果をグローバル一時テーブルに入れるのが最も簡単な方法だと思いました。次に、サブクエリ自体に参加するのではなく、残りのクエリをGTTに参加させます。そうすることで、CPU使用率が大幅に削減されました。私は修正をアプリケーションベンダーに送りました、そして彼らが何を言うか見るのを待っています。


    1. SQL ServerでのOBJECTPROPERTYEX()のしくみ

    2. ClassCastException:MySQLへの接続時にjava.math.BigIntegerをjava.lang.Longにキャストできません

    3. SQL ServerでのCOT()の例

    4. 2016年に登場するOracle12.2.0.1