Я настраиваю пул соединений JDBC для Java EE, Payara - приложения PostgreSQL.
Сейчас я наблюдаю некоторые неожиданные медленные запросы SQL, которые происходят случайно.Иногда ответ SQL для простого выбора с помощью PK может занять более 30 секунд.
Я использую источник данных org.postgresql.ds.PGSimpleDataSource, который не выполняет пул соединений.Это причина, почему я иногда подозреваю медленный SQL.
Я видел, что org.postgresql.ds.common.BaseDataSource имеет реализации PGConnectionPoolDataSource, PGPoolingDataSource, PGSimpleDataSource, PGXADataSource.
Мои вопросы: какой будет наилучший подход для выбора и настройки наилучшей реализации источника данных пула соединений?
Может быть, есть какой-то другой общий пул соединений JDBC?
Iпробовал 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>