Asakusa Framework Advent Calendar 2016の9日目です。
今日は、2016/12/6にリリースされたAsakusaFW 0.9.0のWindGateのデータベース接続時の最適化オプションについてです。
AsakusaFWはWindGate JDBCでRDBアクセスが出来ます。
WindGate JDBCはどのRDBMSでも使えるようにする為、標準的なSQLのみでDBアクセスするようになっています。
が、今回、Oracle11gのダイレクト・パス・インサートを使うオプションが追加になりました。
以下のような設定を行うと、INSERT文にAPPEND_VALUESヒント(/*+ APPEND_VALUES */)が追加されるそうです。(今はOracle DBを持ってないので試せてないです^^;)
- WindGateのプロファイルに「resource.jdbc.optimizations=ORACLE_DIRPATH」を指定する
- ExporterクラスでgetOptionsメソッドをオーバーライドしてOption.ORACLE_DIRPATHを返すようにする
ただ、APPEND_VALUESでネットを検索してみたら、使いどころを間違うと逆にパフォーマンスが劣化することがあるようですね。このオプションを付けたり外したりして試してみるのが良さそうです。
(AsakusaFWでは基本的にある程度大量のデータをINSERTすることになるので、たぶんダイレクト・パス・インサートの方が速いのだろうとは思いますが)