У DWS нет собственного JDBC‑пула соединений, и унаследованный пул соединений PostgreSQL находится в офлайн‑режиме. Используйте сторонние пулы соединений, такие как Druid, HikariCP или DBCP 2.
Параметр | Значение по умолчанию | Описание |
|---|---|---|
driverClassName | Введите значение org.postgresql.Driver. | Имя драйвера базы данных. |
url | N/A | URL для подключения к базе данных. |
имя пользователя | N/A | Имя пользователя. |
пароль | N/A | Пароль. |
connectionProperties | N/A | Параметры соединения отправляются драйверу JDBC при установке нового соединения. Строка должна быть в формате [Parameter name=Parameter value;]. NOTE: Необходимо указать атрибуты имени пользователя и пароля. Поэтому эти два параметра здесь включать не нужно. |
defaultAutoCommit | N/A | Автоматическая фиксация. По умолчанию соединение, созданное через текущий пул соединений, находится в состоянии автоматической фиксации. Если этот параметр не установлен, setAutoCommit метод не вызывается. |
defaultReadOnly | N/A | Настройка только для чтения. По умолчанию соединение, созданное через текущий пул соединений, является только для чтения. Если соединение не задано, то setReadOnly метод не вызывается. |
defaultTransactionIsolation | N/A | Уровень изоляции транзакций. Политика изоляции транзакций по умолчанию используется для соединений, созданных через этот пул. Значение может быть одним из следующих:
|
defaultCatalog | N/A | Каталог по умолчанию используется для соединений, созданных через этот пул. |
cacheState | true | Статус кеша пула соединений. Если этот параметр установлен в true, текущий статус только для чтения и параметры автокоммита кешируются во время первой операции чтения или записи после подключения пула ресурсов. Это устраняет необходимость дополнительных запросов к базе данных на последующих getter вызовы. Если к базовому соединению обращаются напрямую, изменения состояния только для чтения или параметров автокоммита не обновят кеш. Установите этот параметр в false чтобы отключить кеширование в таких случаях. |
defaultQueryTimeout | null | Интервал таймаута запроса.
|
enableAutoCommitOnReturn | true | Когда соединение возвращается в пул, соединение автоматически отправляется. Установка его в true вернет соединение в пул с autoCommit установлено в true по умолчанию. |
rollbackOnReturn | true | Откатить все операции, когда соединение возвращается в пул. Установка его в true будет автоматически выполнено "rollback()" когда соединение возвращается в пул, при условии, что включена автоматическая отправка. |
initialSize | 0 | Количество начальных соединений. Количество соединений, создаваемых во время инициализации при запуске текущего пула соединений. Начальная версия — 1.2. |
maxTotal | 8 | Максимальное количество активных соединений в пуле. Отрицательное значение означает отсутствие ограничения. |
maxIdle | 8 | Maximum number of idle connections in the pool. Excess idle connections are released when returned to the pool. A negative value means there is no limit. |
minIdle | 0 | Минимальное количество idle соединений. Минимальное количество idle соединений, которое следует сохранять в пуле. Если количество idle соединений падает ниже этого значения, создаются новые idle соединения. Значение 0 означает, что бездействующие соединения не создаются. ПРИМЕЧАНИЕ: Значение применяется только когда timeBetweenEvictionRunsMillis установлено положительное число. |
maxWaitMillis | N/A | Максимальное время ожидания получения соединения из пула соединений.
|
validationQuery | SELECT 1 | SQL‑оператор подтверждения запроса, проверяющий соединение до его возврата вызывающему через пул соединений.
|
validationQueryTimeout | N/A | Интервал тайм‑аута запроса для корректных SQL‑операторов, в секундах. Если параметр установлен положительным числом, значение передаётся в "setQueryTimeOut()" метод JDBC‑драйвера. Настройка применяется к SQL‑оператору, подтверждающему валидность запроса. |
testOnCreate | false | Проверять действительность соединения сразу после создания. Если проверка не проходит, попытка создания завершается неудачей. |
testOnBorrow | true | Проверять действительность соединения, когда оно берётся из пула. Если проверка не проходит, соединение освобождается, и берётся другое. |
testOnReturn | false | Проверять действительность соединения перед его возвратом в пул. |
testWhileIdle | false | Проверять действительность неактивных соединений с помощью эвиктора, если доступен. Недействительные соединения освобождаются. |
timeBetweenEvictionRunsMillis | -1 | Время простоя (в миллисекундах) для потока эвикции неактивных объектов. Неположительное значение отключает поток. |
numTestsPerEvictionRun | 3 | Количество объектов, проверяемых во время работы каждого потока удаления простаивающих объектов. |
minEvictableIdleTimeMillis | 1000 * 60 * 30 | Минимальное количество миллисекунд, в течение которых объекты, удовлетворяющие условиям удаления, находятся в простое в пуле. Минимальная длительность освобождения простаивающего соединения, в миллисекундах. |
softMinEvictableIdleTimeMillis | -1 | Минимальное количество миллисекунд, в течение которых объекты, удовлетворяющие условиям удаления, находятся в простое в пуле. Простаивающие соединения освобождаются после как минимум N миллисекунд, при условии, что сохраняется по крайней мере количество соединений, указанное параметром minIdle, в пуле. Если miniEvictableIdleTimeMillis установлен в положительное число, удалитель простаивающих соединений проверяет miniEvictableIdleTimeMillis сначала, а затем softMinEvictableIdleTimeMillis и minIdle условие. |
maxConnLifetimeMillis | -1 | Максимальное время жизни соединения (в миллисекундах). Соединения, превышающие это время, завершаются при следующей активации, пассивации или проверке. Значение 0 или отрицательное значение означает неограниченное время жизни. |
logExpiredConnections | true | Записывать ли логи, когда истекшее соединение закрывается пулом. Если продолжительность жизни соединения превышает maxConnLifetimeMillis, оно будет освобождено пулом соединений, и журнал будет создан по умолчанию. Если этот параметр установлен в false, журнал не будет записан. |
connectionInitSqls | N/A | Этот параметр выполняет набор SQL‑запросов для инициализации физического соединения при его первом создании. Эти запросы выполняются только один раз для каждого соединения. |
lifo | true | Последний зашел, первый вышел.
|
poolPreparedStatements | false | Это определяет, будет ли применяться пул предварительной обработки запросов в пуле соединений. |
maxOpenPreparedStatements | N/A | Максимальное количество операторов, которое может быть выделено в пуле операторов одновременно. Отрицательное значение означает отсутствие ограничений. Этот параметр также применяется к предварительно обработанному пулу операторов. Когда для каждого соединения создаётся пул операторов, в него включаются предварительно обработанные операторы, создаваемые следующим методом.
ПРИМЕЧАНИЕ: Убедитесь, что соединения оставляют ресурсы для других операторов, задав maxOpenPreparedStatements в значение, меньшее максимального количества курсоров. |
accessToUnderlyingConnectionAllowed | false | Это определяет, может ли PoolGuard получать доступ к базовым соединениям. |
removeAbandonedOnMaintenance removeAbandonedOnBorrow | false | Нужно ли удалять оставшиеся без внимания соединения, которые были оставлены более длительное время, чем указано в параметре removeAbandonedTimout. Если значение 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 для подключения к базе данных. |
Имя пользователя | N/A | Имя пользователя. |
Пароль | 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 | Максимальная продолжительность, на которую соединение может быть предоставлено. Минимальное значение — 2000 миллисекунд, используется для журналирования утечек соединения. |
schema | N/A | База данных по умолчанию schema. |
threadFactory | N/A | The java.util.concurrent.ThreadFactory экземпляр используется пулом соединений для создания потоков. Этот параметр может быть доступен только через программную конфигурацию или контейнер IoC. |
scheduledExecutor | N/A | The java.util.concurrent.ScheduledExecutorService экземпляр используется пулом соединений для выполнения запланированных задач. Этот параметр может быть доступен только через программную конфигурацию или контейнер IoC. |
Скачайте пакет драйвера Druid с https://druid.apache.org/downloads/.
Параметр | Значение по умолчанию | Описание |
|---|---|---|
url | N/A | URL для подключения к базе данных. |
имя пользователя | N/A | Имя пользователя. |
пароль | N/A | Пароль. |
driverClassName | Введите значение org.postgresql.Driver. | Имя драйвера базы данных. |
initialSize | 0 | Количество физических соединений, устанавливаемых во время инициализации. Инициализация происходит, когда init method is invoked explicitly or when the getConnection method is invoked for the first time. |
maxActive | 8 | Maximum number of connections in the thread pool. |
minIdle | 0 | Minimum number of idle threads in the thread pool. Druid periodically scans the number of connections. If the number exceeds the specified parameter, redundant connections are closed. If fewer connections are available, new ones are created. This parameter helps manage connections during high request volumes, though it can be time-consuming. |
connectTimeout | N/A | Timeout interval for connecting to the database, in milliseconds. |
socketTimeout | N/A | Timeout interval for the socket to connect to the database, in milliseconds. |
maxWait | -1 | Время ожидания нового запроса, когда соединения в пуле соединений исчерпаны, в миллисекундах. –1 указывает на бесконечное ожидание до возникновения таймаута. |
poolPreparedStatements | false | Определяет, кэшировать ли preparedStatement, то есть PSCache. PSCache значительно улучшает производительность базы данных, поддерживающей курсоры. |
maxOpenPreparedStatements | N/A | Если PSCache включён, значение этого параметра должно быть больше 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 чтобы обеспечить безопасность без ущерба для производительности. Если время простоя больше значения timeBetweenEvictionRunMills, выполняя validationQuery команда для проверки валидности соединения не будет иметь никакого эффекта. |
timeBetweenEvictionRunsMillis | 60s | Эта validationQuery команда проверяет действительность соединения. Если количество неактивных соединений превышает minIdle, избыточные соединения закрываются. Если доступны меньшие количества неактивных соединений, создаются новые. Соединения, не использованные в течение времени, указанного в timeBetweenEvictionRunsMillis отключены. Этот параметр также:
|
minEvictableIdleTimeMillis | 30min | Maximum lifetime of an idle connection before eviction. If the time since the last activity exceeds minEvictableIdleTimeMillis, соединение закрывается потоком Destroy. ПРИМЕЧАНИЕ: Этот параметр конфликтует с timeBetweenEvictionRunsMillis параметр. Вы можете оставить этот параметр пустым. |
connectionInitSqls | N/A | SQL‑запрос выполняется при инициализации физического соединения. |
exceptionSorter | N/A | Когда база данных генерирует некоторые необратимые исключения, соединение отбрасывается. |
filters | N/A | Этот параметр настраивает расширяющий плагин с использованием псевдонима. Тип атрибута — строка. Общие плагины включают фильтры, используемые для мониторинга и статистики:
|
proxyFilters | N/A | Тип List<com.alibaba.druid,filter.Filter>. Вы можете настроить оба фильтр и proxyFilters. |
removeAbandoned | false | Восстанавливать ли утечки соединений. Когда getNumActive() подходы getMaxActive(), система восстанавливает недействительные соединения, не использованные в течение removeAbandonedTimeout период (300 секунд по умолчанию). Соединения, превышающие этот тайм-аут, принудительно закрываются. |
removeAbandonedTimeout | 300s | Временной предел для Druid принудительно восстанавливать соединения, в секундах. Druid принудительно восстанавливает соединение из пула после того, как указанное время прошло с момента установления соединения, начиная с момента, когда программа получает соединение из пула. |
logAbandoned | false | Нужно ли выводить Лог при восстановлении утекших соединений. Этот параметр указывает, следует ли записывать информацию о стеке текущего потока в логи, когда removeAbandoned происходит. |
removeAbandonedTimeoutMillis | 5min | Интервал таймаута для восстановления соединений. Если removeAbandoned установлен в true, Druid периодически проверяет, переполняется ли пул потоков. Если пул потоков не находится в рабочем состоянии и указанное время превышено, пул потоков освобождается. |
maxEvictableIdleTimeMillis | 7 часов | Максимальное время простоя. Значение по умолчанию — 7 часов. |
maxPoolPrepareStatementPerConnectionSize | 20 | Максимальное количество SQL‑запросов, которые могут быть кэшированы для каждого соединения. |
keepAlive | false | Количество подключений minIdle, которые необходимо поддерживать при инициализации пула. Если количество подключений опускается ниже minIdle и время простоя превышает minEvictableIdleTimeMillis, the keepAlive операция выполняется для поддержания minIdle value. |
notFullTimeoutRetryCount | 0 | Количество повторных попыток, когда сумма количества выданных соединений в пуле соединений и количества доступных соединений меньше максимального допустимого количества соединений. Значение по умолчанию 0. |
logSlowSql | false | Выводить ли медленные SQL‑запросы. |
Создайте db.properties файл в ресурс каталог.
# Database connection parametersurl=jdbc:postgresql://10.10.0.13:8000/gaussdbusername=userpassword=passvalidationQuery=select 1validationQueryTimeout=300#driverClassName=JDBC driver namedriverClassName=org.postgresql.Driver# Number of initialized connectionsinitialSize=1# Maximum number of connectionsmaxActive=20# Number of core threads. If the number of core threads is greater than this configured value, the threads are released.minIdle=10
Пример кода:
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;}}