1

Grails で接続プーリングがどのようにアクティブ化されているかがわかりませんでした。

私の DataSource.groovy には、次のものがあります。

        url = "jdbc:mysql://localhost/myapp?useUnicode=yes&characterEncoding=UTF-8"
        username = "root"
        password = ""
        dialect = org.hibernate.dialect.MySQL5InnoDBDialect
        pooled = true
        properties {
            maxActive = -1
            minEvictableIdleTimeMillis=1800000
            timeBetweenEvictionRunsMillis=1800000
            numTestsPerEvictionRun=3
            testOnBorrow=true
            testWhileIdle=true
            testOnReturn=true
            validationQuery = "select 1"

        }

接続プールを有効にするために、pooled = true を設定する以外に何かしなければならないことはありますか?

4

2 に答える 2

2

いいえ、pooled属性はプーリングを構成します。に設定されている場合false、毎回新しい接続を作成することになり、これには数百ミリ秒かかることがあるため、お勧めできません。

pooled = falseただし、JNDI データソースは独自のプールを行うため、2 回プールする必要がないため、JNDI を使用するときに設定します。

于 2013-09-01T19:30:35.163 に答える
0

以下は、Grails DataSourceドキュメント ページのサンプルです。

dataSource {
pooled = true
dbCreate = "update"
url = "jdbc:mysql://localhost:3306/my_database"
driverClassName = "com.mysql.jdbc.Driver"
dialect = org.hibernate.dialect.MySQL5InnoDBDialect
username = "username"
password = "password"
properties {
   jmxEnabled = true
   initialSize = 5
   maxActive = 50
   minIdle = 5
   maxIdle = 25
   maxWait = 10000
   maxAge = 10 * 60000
   timeBetweenEvictionRunsMillis = 5000
   minEvictableIdleTimeMillis = 60000
   validationQuery = "SELECT 1"
   validationQueryTimeout = 3
   validationInterval = 15000
   testOnBorrow = true
   testWhileIdle = true
   testOnReturn = false
   jdbcInterceptors = "ConnectionState;StatementCache(max=200)"
   defaultTransactionIsolation = java.sql.Connection.TRANSACTION_READ_COMMITTED
}}

pooled を true に設定するだけでなく、事前に初期化する接続数 (initialSize) と、負荷が高くなったときに維持する接続の最大数 (maxActive) の設定を微調整することもできます。

于 2014-08-05T09:15:33.063 に答える