DWS не имеет собственного пула соединений JDBC, а унаследованный пул соединений PostgreSQL находится в offline. Используйте сторонние пулы соединений, такие как Druid, HikariCP или DBCP 2.
|
Параметр |
Значение по умолчанию |
Описание |
|---|---|---|
|
driverClassName |
Введите значение org.postgresql.Driver. |
Имя драйвера базы данных. |
|
url |
N/A |
URL для подключения к базе данных. |
|
username |
N/A |
Имя пользователя. |
|
password |
N/A |
Password. |
|
connectionProperties |
N/A |
Параметры соединения отправляются в JDBC driver при установке нового соединения. Строка должна быть в формате [Parameter name=Parameter value;]. Необходимо указать атрибуты username и password. Поэтому эти два параметра не нужно включать здесь. |
|
defaultAutoCommit |
N/A |
Автоматическая фиксация. По умолчанию соединение, созданное через текущий пул соединений, находится в состоянии автоматической фиксации. Если этот параметр не установлен, метод setAutoCommit не вызывается. |
|
defaultReadOnly |
N/A |
Настройка только для чтения. По умолчанию соединение, созданное через текущий пул соединений, является только для чтения. Если соединение не настроено, метод setReadOnly не вызывается. |
|
defaultTransactionIsolation |
N/A |
Уровень изоляции транзакций. Для соединений, созданных через этот пул, используется политика изоляции транзакций по умолчанию. Значение может быть одним из следующих:
|
|
defaultCatalog |
N/A |
Для соединений, созданных через этот пул, используется каталог по умолчанию catalog. |
|
cacheState |
true |
Статус кэша пула соединений. Если этот параметр установлен в true, текущий статус только для чтения и настройки автокоммита кэшируются во время первой операции чтения или записи после подключения пула ресурсов. Это устраняет необходимость дополнительных запросов к базе данных при последующих вызовах getter. Если к базовому соединению обращаются напрямую, изменения состояния только для чтения или настроек автокоммита не обновят кэш. Установите этот параметр в false, чтобы отключить кэширование в таких случаях. |
|
defaultQueryTimeout |
null |
Интервал тайм‑аута запроса.
|
|
enableAutoCommitOnReturn |
true |
Когда соединение возвращается в пул, соединение автоматически отправляется. Установка значения true вернёт соединение в пул с параметром autoCommit, установленным по умолчанию в true. |
|
rollbackOnReturn |
true |
Откатить все операции, когда соединение возвращается в пул. Установка значения true автоматически выполнит "rollback()" при возврате соединения в пул, при условии, что включена автоматическая отправка. |
|
initialSize |
0 |
Количество начальных соединений. Число соединений, создаваемых во время инициализации при запуске текущего пула соединений. Начальная версия — 1.2. |
|
maxTotal |
8 |
Максимальное количество активных соединений в пуле. Отрицательное значение означает отсутствие ограничения. |
|
maxIdle |
8 |
Максимальное количество неактивных соединений в пуле. Избыточные неактивные соединения освобождаются при возврате в пул. Отрицательное значение означает отсутствие ограничения. |
|
minIdle |
0 |
Минимальное количество неактивных соединений. Минимальное количество неактивных соединений, которое следует сохранять в пуле. Если количество неактивных соединений опускается ниже этого значения, создаются новые неактивные соединения. Значение 0 означает, что неактивные соединения не создаются. Значение вступает в силу только когда timeBetweenEvictionRunsMillis установлен в положительное число. |
|
maxWaitMillis |
N/A |
Максимальное время ожидания получения соединения из пула соединений.
|
|
validationQuery |
SELECT 1 |
SQL‑запрос подтверждения, который проверяет соединение перед его возвратом вызывающему коду пулом соединений.
|
|
validationQueryTimeout |
N/A |
Интервал тайм‑аута запроса для корректных SQL‑операций, в секундах. Если параметр задан положительным числом, значение передаётся в метод "setQueryTimeOut()" JDBC‑драйвера. Настройка применяется к SQL‑операции, подтверждающей корректность запроса. |
|
testOnCreate |
false |
Определяет, проверять ли корректность соединения сразу после создания. Если проверка не проходит, попытка создания завершается неудачей. |
|
testOnBorrow |
true |
Определяет, проверять ли корректность соединения при выдаче из пула. Если проверка не проходит, соединение освобождается, и выдаётся другое. |
|
testOnReturn |
false |
Определяет, проверять ли корректность соединения перед возвратом в пул. |
|
testWhileIdle |
false |
Определяет, проверять ли действительность неактивных соединений с помощью evictor, если он доступен. Недействительные соединения освобождаются. |
|
timeBetweenEvictionRunsMillis |
-1 |
Время гибернации (в миллисекундах) для потока выселения неактивных объектов. Неположительное значение отключает поток. |
|
numTestsPerEvictionRun |
3 |
Количество объектов, проверяемых во время работы каждого потока выселения неактивных объектов. |
|
minEvictableIdleTimeMillis |
1000 * 60 * 30 |
Минимальное количество миллисекунд, в течение которых объекты, соответствующие условиям выселения, находятся в простое в пуле. Минимальная продолжительность освобождения неактивного соединения, в миллисекундах. |
|
softMinEvictableIdleTimeMillis |
-1 |
Минимальное количество миллисекунд, в течение которых объекты, соответствующие условиям выселения, находятся в простое в пуле. Неактивные соединения освобождаются после как минимум N миллисекунд, при условии, что в пуле сохраняется как минимум количество соединений, указанное в minIdle. Если minEvictableIdleTimeMillis задано положительным числом, evictor неактивных соединений сначала проверяет его значение (независимо от количества неактивных соединений в текущем пуле), а затем значение (включая условие minIdle) softMinEvictableIdleTimeMillis. |
|
maxConnLifetimeMillis |
-1 |
Максимальное время жизни соединения (в миллисекундах). Соединения, превышающие это время, завершаются при следующей активации, пассивации или проверке. Значение 0 или отрицательное значение означает неограниченное время жизни. |
|
logExpiredConnections |
true |
Записывать ли логи, когда пул закрывает просроченное соединение. По умолчанию, если время жизни соединения превышает maxConnLifetimeMillis, пул освобождает его и записывает логи. Если этот параметр установлен в false, логи записываться не будут. |
|
connectionInitSqls |
N/A |
Этот параметр выполняет набор SQL statements для инициализации физического соединения при его первом создании. Эти statements выполняются только один раз для каждого соединения. |
|
lifo |
true |
Последний пришёл — первый ушёл.
|
|
poolPreparedStatements |
false |
Определяет, будет ли применяться пул предварительно подготовленных операторов в пуле соединений. |
|
maxOpenPreparedStatements |
N/A |
Максимальное количество операторов, которое может быть выделено в пуле операторов одновременно. Отрицательное значение означает отсутствие ограничения. Этот параметр также применяется к предварительно обработанному пулу операторов. Когда для каждого соединения создаётся пул операторов, включаются предварительно обработанные операторы, генерируемые следующим методом.
Убедитесь, что соединения оставляют ресурсы для других операторов, установив maxOpenPreparedStatements в значение, меньшее максимального количества курсоров. |
|
accessToUnderlyingConnectionAllowed |
false |
Это определяет, может ли PoolGuard получать доступ к базовым соединениям. |
|
removeAbandonedOnMaintenance removeAbandonedOnBorrow |
false |
Определяет, следует ли удалять оставленные соединения, которые были оставлены более длительный период, чем время, указанное в removeAbandonedTimeout. Если значение true, соединения, не использованные более чем removeAbandonedTimeout, считаются оставленными и удаляются. Создание или выполнение операторов сбрасывает свойство lastUsed родительского соединения. Установка этого параметра в значение true помогает восстанавливать соединения в приложениях с небольшим количеством операций записи. |
|
removeAbandonedTimeout |
300 |
Интервал тайм‑аута для удаления отбрасываемого соединения, в секундах. |
|
logAbandoned |
false |
Определяет, включить ли трассировку стека для отбрасываемых операторов или связанного кода в приложении. При включении трассировки стека трассировки для отбрасываемых операторов и журналов, связанных с соединением, будут перезаписываться каждый раз при открытии соединения или создании оператора. |
|
abandonedUsageTracking |
false |
Когда этот параметр установлен в true, пул соединений записывает трассировки стека каждый раз при вызове метода на соединении из пула, сохраняя последнюю трассировку стека для упрощения отладки оставленных соединений. Установка этого параметра в true увеличит нагрузку. При выполнении этой операции будьте осторожны. |
|
fastFailValidation |
false |
Этот параметр относится к быстрому завершению выполнения операторов проверки при возникновении фатального исключения, без выполнения isValid() или запроса проверки. Фатальные исключения включают определённые коды SQL_STATE.
Коды исключений необходимо перезаписать. Для получения подробной информации см. disconnectionSqlCodes. |
|
disconnectionSqlCodes |
N/A |
Код исключения, представляющий собой код SQL_STATE, разделённый запятыми (,). Этот параметр действителен только когда fastFailValidation установлен в true. |
|
jmxName |
N/A |
Этот параметр регистрирует DataSource как JMX MBean с указанным именем, соответствующим синтаксису имени объекта JMX. |
|
registerConnectionMBean |
true |
Нужно ли регистрировать и подключаться к JMX MBean |
|
Параметр |
Значение по умолчанию |
Описание |
|---|---|---|
|
driverClassName |
Введите значение org.postgresql.Driver. |
Имя драйвера базы данных. |
|
jdbcUrl |
N/A |
URL для подключения к базе данных. |
|
username |
N/A |
Имя пользователя. |
|
password |
N/A |
Пароль. |
|
autoCommit |
true |
Нужно ли автоматически отправлять транзакции, когда соединение возвращается в пул соединений. |
|
connectionTimeout |
30000 |
Максимальный интервал ожидания получения соединений из пула соединений. |
|
idleTimeout |
60000 |
Максимальное время жизни простоя соединения. Этот параметр применяется только когда значение minimumIdle меньше, чем значение maximumPoolSize.
|
|
keepaliveTime |
0 |
Интервал проверки доступности простоя соединений, в миллисекундах. 0 указывает, что функция отключена. |
|
maxLifetime |
1800000 |
Максимальное время жизни соединения, в миллисекундах. 0 указывает отсутствие ограничения. |
|
connectionTestQuery |
N/A |
Запрос для обнаружения соединения. |
|
minimumIdle |
10 |
Минимальное количество неактивных соединений. Для повышения производительности рекомендуется не задавать этот параметр. Размер пула соединений фиксирован. |
|
maximumPoolSize |
10 |
Максимальное количество соединений. |
|
metricRegistry |
N/A |
Этот параметр доступен только через программную конфигурацию или контейнер IoC. Этот параметр указывает экземпляр Codahale/Dropwizard MetricRegistry, используемый пулом для записи различных метрик. |
|
healthCheckRegistry |
N/A |
Этот параметр доступен только через программную конфигурацию или контейнер IoC. Этот параметр указывает экземпляр Codahale/Dropwizard HealthCheckRegistry, используемый пулом для записи информации о состоянии. |
|
poolName |
N/A |
Имя пула соединений. |
|
initializationFailTimeout |
1 |
Указывает, быстро ли пул соединений завершает инициализацию при ошибке.
|
|
isolateInternalQueries |
false |
Определяет, изолировать ли запросы HikariCP в транзакции. Этот параметр вступает в силу, когда autoCommit установлен в false. |
|
allowPoolSuspension |
false |
Определяет, разрешено ли приостановить пул соединений и возобновить его через JMX. Когда пул соединений приостановлен, соединение не истекает до восстановления пула. |
|
readOnly |
false |
Указывает, является ли соединение только для чтения. |
|
registerMbeans |
false |
Указывает, включить ли JMX. |
|
catalog |
N/A |
База данных по умолчанию catalog. |
|
connectionInitSql |
N/A |
SQL‑оператор, выполняемый после инициализации пула соединений. |
|
transactionIsolation |
N/A |
Уровень изоляции транзакций по умолчанию. |
|
validationTimeout |
5000 |
Интервал тайм‑аута для обнаружения соединения. Значение должно быть больше, чем значение connectionTimeout. Минимальное значение — 250. |
|
leakDetectionThreshold |
0 |
Максимальная продолжительность, в течение которой соединение может быть предоставлено. Минимальное значение — 2,000 миллисекунд, используется для журналирования утечек соединений. |
|
схема |
N/A |
База данных по умолчанию schema |
|
threadFactory |
N/A |
Экземпляр java.util.concurrent.ThreadFactory, используемый пулом соединений для создания потоков. Этот параметр доступен только через программную конфигурацию или контейнер IoC. |
|
scheduledExecutor |
N/A |
Экземпляр java.util.concurrent.ScheduledExecutorService, используемый пулом соединений для выполнения запланированных задач. Этот параметр доступен только через программную конфигурацию или контейнер IoC. |
Скачайте пакет драйвера Druid из https://druid.apache.org/downloads/.
|
Параметр |
Значение по умолчанию |
Описание |
|---|---|---|
|
url |
N/A |
URL для подключения к базе данных. |
|
username |
N/A |
Имя пользователя. |
|
password |
N/A |
Пароль. |
|
driverClassName |
Введите значение org.postgresql.Driver. |
Имя драйвера базы данных. |
|
initialSize |
0 |
Количество физических соединений, устанавливаемых во время инициализации. Инициализация происходит, когда явно вызывается метод init или когда впервые вызывается метод getConnection. |
|
maxActive |
8 |
Максимальное количество соединений в пуле потоков. |
|
minIdle |
0 |
Минимальное количество неактивных потоков в пуле потоков. Druid периодически сканирует количество соединений. Если количество превышает указанное значение, избыточные соединения закрываются. Если соединений меньше, создаются новые. Этот параметр помогает управлять соединениями при высоких объёмах запросов, хотя может занимать много времени. |
|
connectTimeout |
N/A |
Интервал тайм‑аута при подключении к базе данных, в миллисекундах. |
|
socketTimeout |
N/A |
Интервал тайм‑аута сокета при подключении к базе данных, в миллисекундах. |
|
maxWait |
-1 |
Время ожидания нового запроса, когда соединения в пуле соединений исчерпаны, в миллисекундах. –1 указывает бесконечное ожидание до наступления тайм‑аута. |
|
poolPreparedStatements |
false |
Кешировать preparedStatement, то есть PSCache. PSCache значительно повышает производительность базы данных, поддерживающей курсоры. |
|
maxOpenPreparedStatements |
N/A |
Если PSCache включён, значение этого параметра должно быть greater than 0. Если значение больше 0, poolPreparedStatements будет автоматически установлено в true. |
|
validationQuery |
SELECT 1 |
SQL‑оператор, используемый для проверки действительности соединения. Если validationQuery равно null, параметры testOnBorrow, testOnReturn и testWhileIdle не действуют, поскольку эти три параметра проверяют действительность соединения с базой данных, выполняя SQL‑оператор, указанный в validationQuery. |
|
testOnBorrow |
N/A |
При запросе соединения команда validationQuery проверяет её корректность. Эта конфигурация может снижать производительность, поэтому используйте её с осторожностью. |
|
testOnReturn |
N/A |
При возврате соединения команда validationQuery проверяет её корректность. Эта конфигурация также может влиять на производительность, поэтому используйте её с осторожностью. |
|
testWhileIdle |
true |
Определяет, следует ли проверять соединение при его запросе. Рекомендуется установить этот параметр в true, чтобы обеспечить безопасность без снижения производительности. Если время простоя больше чем значения timeBetweenEvictionRunMillis, выполнение команды validationQuery не поможет. |
|
timeBetweenEvictionRunsMillis |
60s |
Команда validationQuery проверяет корректность соединения. Если количество простоящих соединений превышает minIdle, избыточные соединения закрываются. Если доступно меньше простоящих соединений, добавляются новые. Соединения, не использованные в течение времени, указанного в timeBetweenEvictionRunsMillis, отключаются. Этот параметр также:
|
|
minEvictableIdleTimeMillis |
30min |
Максимальное время жизни простоя соединения перед выселением. Если время с момента последней активности превышает minEvictableIdleTimeMillis, соединение закрывается потоком Destroy. Этот параметр конфликтует с параметром timeBetweenEvictionRunsMillis. Вы можете оставить этот параметр пустым. |
|
connectionInitSqls |
N/A |
SQL‑оператор выполняется при инициализации физического соединения. |
|
exceptionSorter |
N/A |
Когда база данных генерирует некоторые неисправимые исключения, соединение отбрасывается. |
|
filters |
N/A |
Этот параметр настраивает расширенный плагин, используя псевдоним. Тип атрибута — строка. Общие плагины включают фильтры, используемые для мониторинга и статистики:
|
|
proxyFilters |
N/A |
The type is List<com.alibaba.druid,filter.Filter>. You can configure both filter and proxyFilters. |
|
removeAbandoned |
false |
Нужно ли восстанавливать утекшие соединения. Когда getNumActive() приближается к getMaxActive(), система восстанавливает недействительные соединения, не использованные в течение периода removeAbandonedTimeout (по умолчанию 300 секунд). Соединения, превышающие этот тайм‑аут, принудительно закрываются. |
|
removeAbandonedTimeout |
300s |
Предел времени для принудительного восстановления соединений Druid, в секундах. Druid принудительно восстанавливает соединение из пула после истечения указанного времени с момента установления соединения, начиная с момента, когда программа получает соединение из пула. |
|
logAbandoned |
false |
Нужно ли выводить журнал при восстановлении утекших соединений. Этот параметр указывает, следует ли записывать информацию о стеке текущего потока в журнал, когда происходит removeAbandoned. |
|
removeAbandonedTimeoutMillis |
5min |
Интервал тайм‑аута для освобождения соединений. Если removeAbandoned установлен в true, Druid периодически проверяет, переполняется ли пул потоков. Если пул потоков не находится в рабочем состоянии и указанное время превышено, пул потоков освобождается. |
|
maxEvictableIdleTimeMillis |
7hours |
Максимальное время простоя. Значение по умолчанию — 7 часов. |
|
maxPoolPrepareStatementPerConnectionSize |
20 |
Максимальное количество SQL‑операторов, которые могут кэшироваться для каждого соединения. |
|
keepAlive |
false |
Количество соединений minIdle, которые необходимо поддерживать при инициализации пула. Если количество соединений опускается ниже minIdle и время простоя превышает minEvictableIdleTimeMillis, выполняется операция keepAlive для поддержания значения minIdle. |
|
notFullTimeoutRetryCount |
0 |
Количество попыток повторного запроса, когда сумма количества выданных соединений в пуле и количества доступных соединений меньше максимального разрешённого количества соединений. Значение по умолчанию — 0. |
|
logSlowSql |
false |
Нужно ли выводить медленные SQL‑запросы. |
Создайте файл db.properties в каталоге resource.
Пример кода:
import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.pool.DruidDataSourceFactory;import com.alibaba.druid.pool.DruidPooledConnection;import java.io.IOException;import java.io.InputStream;import java.sql.ResultSet;import java.sql.Statement;import java.util.Properties;public class TestDataSource {private static DruidDataSource dataSource;public static void main(String[] args) throws Exception {Properties properties = loadProperties();dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);dataSource.setTimeBetweenEvictionRunsMillis(50 * 1000);dataSource.setRemoveAbandoned(true);dataSource.setRemoveAbandonedTimeout(120);dataSource.setSocketTimeout(5000);dataSource.setConnectTimeout(5000);dataSource.setQueryTimeout(5);final DruidPooledConnection connection = dataSource.getConnection();final Statement statement = connection.createStatement();execute(statement);}public static void execute(Statement statement) {ResultSet resultSet = null;try {resultSet = statement.executeQuery("select 1");while (resultSet.next()) {String str = resultSet.getString(1);System.out.println("n1 :" + str);return;}} catch (Exception e) {e.printStackTrace();}}/*** Load the configuration file and obtain parameters from the configuration file.*/public static Properties loadProperties() {InputStream inputStream = TestDataSource.class.getClassLoader().getResourceAsStream("db.properties");Properties ps = new Properties();try {ps.load(inputStream);} catch (IOException e) {e.printStackTrace();}return ps;}}