2017-06-07 7 views
1

私たちのDBAは、フェッチサイズをJDBCのデフォルト(10)より大きくしたいと考えています。 application.conf、JDBC URLなどを使ってこれをグローバルに行う方法はありますか?Scala Play(Anorm)アプリケーションでOracleフェッチサイズをグローバルに設定するにはどうすればよいですか?

私のDBは、本質的に

object SomeController extends Controller { 
    def someMethod(acronym: String) = Action { implicit request => 
    DB.withConnection { implicit c => 
     val cust = SQL("""select whatever.... where acronym = {acronym}""").on("acronym" -> acronym).apply() 

のように見える。しかし、それらの多くは、多くのコントローラおよび方法を上回るがあります呼び出します。

中央設定を行うにはどうすればよいですか?

+0

weblogic JDBCを使用している場合、フェッチ配列のサイズを増やすweblogic.oci.cacheRowsを見ることができます... – sandman

+0

私たちは普通の古いojdbc6.jarを使用しており、アプリケーションは組み込みのNettyサーバ。 –

答えて

0

一部のOracle JDBCのjarファイルを検索した後、私が見つかりました:

ojdbc6-unjar $ cat ./oracle/jdbc/defaultConnectionProperties.properties 
# This properties file sets the default value for connection properties. 
# Entries in this file override the predefined defaults as specified 
# in the JavaDoc for oracle.jdbc.OracleConnection. These defaults are 
# themselves overridden by any values set via -D which are overridden 
# by values passed in the Properties argument to getConnection. 
# 

このビットとJavadocは、実際のパラメータ名を導出する方法についての説明で非常に悪い仕事をすることなく、種々の多くの試行の後にケースのスタイル、パッケージ名など私は仕事ができることこれを見つけた:

JAVA_OPTS="-Doracle.jdbc.defaultRowPrefetch=1000" \ 
    ./activator -Dconfig.file=conf/xe.conf run 

これはboneCPは、任意のコードを変更することなく、合理的なフェッチサイズを使用するようになります。

1

defaultRowPrefreshは10(Table 4-2 Connection Properties Recognized by Oracle JDBC Drivers)のデフォルトから変更するように設定することができるよりも、OracleのJDBCドライバのプロパティである

明示的に文書化されていないが、カスタムJDBCプロパティがdatasourceキーの下に行われているように、それが見えます(thisを参照し、 this

だからdb.default.datasource.defaultRowsPrefetch="100"のように動作します。

+0

ありがとうTony!このアプリケーションはまだPlay 2.3.xにあることが判明しています。私はそれが光のプールを持っていると思います。私は更新し、それをテストしようとする、有望に見える。 –

+0

残念ながら、私はPlayのアップグレードに関するいくつかの無関係な問題を抱えていましたが、それをテストすることはできませんでしたが、Hikari(Play> = 2.4)でうまくいくと確信しています。別の答えとして-D jvmフラグworkaroudnを2.3に掲示しています –

関連する問題