我正在为Java EE,Payara-PostgreSQL应用程序设置JDBC连接池。
现在,我遇到了一些随机发生的意外的缓慢SQL查询。有时,通过PK进行简单选择的SQL响应可能会花费30秒以上。
我正在使用org.postgresql.ds.PGSimpleDataSource数据源,该数据源不执行连接池。这就是为什么我有时怀疑SQL缓慢的原因。
我看到org.postgresql.ds.common.BaseDataSource具有PGConnectionPoolDataSource,PGPoolingDataSource,PGSimpleDataSource和PGXADataSource实现。
我的问题是,选择和调整最佳连接池数据源实现的最佳方法是什么?
也许还有其他通用的JDBC连接池?
我尝试了PGConnectionPoolDataSource,它似乎具有更好的性能。
配置的META-INF / glassfish-resources.xml如下:
<resources>
<jdbc-connection-pool datasource-classname="org.postgresql.ds.PGSimpleDataSource"
name="PostgresPool"
res-type="javax.sql.DataSource"
max-pool-size="100"
steady-pool-size="10"
is-connection-validation-required="true"
connection-validation-method="table"
validation-table-name="locale"
validate-atmost-once-period-in-seconds="60">
<property name="ServerName" value="localhost"></property>
<property name="PortNumber" value="5432"></property>
<property name="DatabaseName" value="my_db"></property>
<property name="User" value="db_user"></property>
<property name="Password" value="super_secret"></property>
<property name="TcpKeepAlive" value="true"></property>
<property name="Ssl" value="false"></property>
<property name="Sslfactory" value="org.postgresql.ssl.NonValidatingFactory"></property>
</jdbc-connection-pool>