すべてのテーブルのすべてのテーブル定義を取得したい。そして、私はそれを速くしたいです(それは私が頻繁に実行しているスクリプトの一部です)
私は oracle 11g を使用しており、700 個のテーブルがあります。プレーンな jdbc コードでは、4 分かかり、次のようになります。
s = con.statement("select DBMS_METADATA.GET_DDL(object_type,object_name) from user_objects where object_type = 'TABLE');
s.execute();
rs = s.getResultSet();
while(rs.next()){
rs.getString(1);
}
SO 私はこのコードを最適化し、約 20 秒に到達したいと考えています。
Rownum で mod を使用して、それぞれがデータベースへの接続を開き、情報の一部を読み取る 14 のスレッドを作成することで、既に 40 ~ 50 秒に達しています。
しかし、これでは十分ではありません。
私はこれらの方向で考えています:
http://docs.oracle.com/cd/B10501_01/java.920/a96654/connpoca.htm#1063660 - 接続キャッシュ。私の 14 個の接続を connectionCaching に置き換えることで、処理速度を上げることができますか?
この関数がアクセスするテーブルをKEEPバッファキャッシュ領域に保持することはできますか?
とにかく、ここでいくつかの情報をインデックス化しますか?
他の提案は大歓迎です。
ありがとうございました