GaussDB(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: Необходимо указать атрибуты username и password. Поэтому эти два параметра не нужно включать здесь. |
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 | Максимальное количество простояющих соединений в пуле. Избыточные простоящие соединения освобождаются при возврате в пул. Отрицательное значение означает отсутствие ограничения. |
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 | Нужно ли проверять действительность незанятых соединений с помощью эвиктора, если он доступен. Недействительные соединения освобождаются. |
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 | Максимальное количество операторов, которое может быть выделено в пуле операторов одновременно. Отрицательное значение означает отсутствие ограничения. Этот параметр также применяется к предобработанному пулу операторов. Когда пул операторов создаётся для каждого соединения, включаются предобработанные операторы, генерируемые следующим методом.
NOTE: Убедитесь, что соединения оставляют ресурсы для других операторов, задав maxOpenPreparedStatements значение меньше максимального количества курсоров. |
accessToUnderlyingConnectionAllowed | false | Это определяет, может ли PoolGuard получить доступ к нижележащим соединениям. |
removeAbandonedOnMaintenance removeAbandonedOnBorrow | false | Удалять ли заброшенные соединения, которые были заброшены дольше периода, указанного в removeAbandonedTimout. Если значение равно true, соединения, не использованные более чем removeAbandonedTimeout считаются заброшенными и удаляются. Создание или выполнение операторов сбрасывает lastUsed свойство родительского соединения. Установка этого параметра в true помогает восстанавливать соединения в приложениях с небольшим количеством операций записи. |
removeAbandonedTimeout | 300 | Интервал ожидания для удаления отброшенного соединения, в секундах. |
logAbandoned | false | Включать ли трассировку стека для отброшенных операторов или подключённого кода в приложении. При включённом параметре трассировки стека для отброшенных операторов и журналов, связанных с соединением, будет перезаписываться каждый раз при открытии соединения или создании оператора. |
abandonedUsageTracking | false | When this parameter is set to true, пул соединений записывает трассировки стека каждый раз, когда вызывается метод на соединении из пула, сохраняя последнюю трассировку стека для облегчения отладки оставленных соединений. NOTE: Setting this parameter to true will increase the overhead. Exercise caution when performing this operation. |
fastFailValidation | false | Этот параметр относится к быстрому завершению проверочных операторов, если происходит фатальное исключение, без выполнения isValid() или запрос проверки. Фатальные исключения включают конкретные SQL_STATE коды.
Коды исключений необходимо перезаписать. Для деталей смотрите disconnectionSqlCodes. |
disconnectionSqlCodes | N/A | Код исключения, который является кодом SQL_STATE, разделённым запятыми (,). Этот параметр действителен только когда fastFailValidation установлен в true. |
jmxName | N/A | This parameter registers a DataSource as a JMX MBean with a specified name that adheres to the JMX object name syntax. |
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. Когда пул соединений приостановлен, соединение не истекает до восстановления пула соединений. |
Только для чтения | 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 | Это 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 метод вызывается явно или когда getConnection метод вызывается в первый раз. |
maxActive | 8 | Максимальное количество соединений в пуле потоков. |
minIdle | 0 | Минимальное количество бездействующих потоков в пуле. Druid периодически сканирует количество соединений. Если количество превышает указанный параметр, избыточные соединения закрываются. Если доступно меньше соединений, создаются новые. Этот параметр помогает управлять соединениями при больших объёмах запросов, хотя может занимать много времени. |
connectTimeout | N/A | Интервал тайм‑аута для подключения к базе данных в миллисекундах. |
socketTimeout | N/A | Интервал тайм‑аута сокета для подключения к базе данных в миллисекундах. |
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 | Максимальное время жизни неактивного соединения до удаления. Если время с последней активности превышает minEvictableIdleTimeMillis, соединение закрывается потоком Destroy. ПРИМЕЧАНИЕ: Этот параметр конфликтует с timeBetweenEvictionRunsMillis параметр. Вы можете оставить этот параметр пустым. |
connectionInitSqls | N/A | SQL‑запрос выполняется при инициализации физического соединения. |
exceptionSorter | N/A | Когда база данных генерирует некоторые необратимые исключения, соединение отбрасывается. |
фильтры | N/A | Этот параметр настраивает расширенный плагин с использованием алиаса. Тип атрибута — строка. Распространённые плагины включают фильтры, используемые для мониторинга и статистики:
|
proxyFilters | N/A | Тип List<com.alibaba.druid,filter.Filter>. Вы можете настроить оба фильтр и proxyFilters. |
removeAbandoned | false | Указывает, следует ли восстанавливать утечку соединений. Когда getNumActive() подходы getMaxActive(), система освобождает недействительные соединения, не использованные в течение removeAbandonedTimeout период (по умолчанию 300 секунд). Соединения, превышающие этот тайм-аут, принудительно закрываются. |
removeAbandonedTimeout | 300s | Ограничение времени для Druid принудительно высвобождать соединения, в секундах. Druid принудительно высвободит соединение из пула после того, как пройдет указанное время с момента установления соединения, начиная с момента, когда программа получает соединение из пула. |
logAbandoned | false | Нужно ли выводить лог при высвобождении утёкших соединений. Этот параметр указывает, следует ли записывать информацию о стекe текущего потока в логи, когда removeAbandoned происходит. |
removeAbandonedTimeoutMillis | 5min | Интервал тайм-аута для высвобождения соединений. Если removeAbandoned установлен в true, Druid периодически проверяет, переполняется ли пул потоков. Если пул потоков не находится в рабочем состоянии и указанное время превышено, пул потоков восстанавливается. |
maxEvictableIdleTimeMillis | 7 часов | Максимальное время простоя. Значение по умолчанию — 7 часов. |
maxPoolPrepareStatementPerConnectionSize | 20 | Максимальное количество SQL‑запросов, которые могут кэшироваться для каждого соединения. |
keepAlive | false | Количество соединений minIdle, которые необходимо поддерживать при инициализации пула. Если количество соединений падает ниже minIdle и время простоя превышает minEvictableIdleTimeMillis, the keepAlive операция выполняется для поддержания minIdle значение. |
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;}}