0

(すべての接続にわたって)PreparedSteatementプーリングに関連する質問があります。これが設定ファイルです

<datasources>
  <local-tx-datasource>
    <jndi-name>JNDI-NAME</jndi-name>
    <connection-url>jdbc:mysql://<server_name>/<database_name>?useServerPrepStmts=true</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>xxx</user-name>
    <password>xxxxx</password>
    <min-pool-size>10</min-pool-size>
    <max-pool-size>20</max-pool-size>
    <idle-timeout-minutes>20</idle-timeout-minutes>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>
    <background-validation>true</background-validation>
    <background-validation-minutes>5</background-validation-minutes>
    <prepared-statement-cache-size>100</prepared-statement-cache-size>
    <share-prepared-statements>true</share-prepared-statements>
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
      -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
      -->
    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml -->
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>

この行のようです:

<background-validation-minutes>5</background-validation-minutes> 

プリペアドステートメントに問題は発生しませんが、次のようになります。

<idle-timeout-minutes>20</idle-timeout-minutes>

過去20分間トラフィックがなかった場合、すべての接続が削除されて再作成されます。そのため、既存のプリペアドステートメントはキャッシュされたプリペアドステートメントのプールから削除されます。この問題を克服する方法は?MySQLサーバーは8時間後に接続を閉じるため、idle-timeout-minutesを使用する必要があります

4

2 に答える 2

0

アイドル タイムアウトを 480 分に設定しますか?

于 2009-07-17T14:45:10.627 に答える