2016-02-25 4 views
0

У меня возникла проблема при создании пакета в JAVA, это значит, что мне нужно будет вызывать определенное соединение каждую секунду для обработки одного блока строк, достигая предела размера пула.JAVA обрабатывает множество подключений к пулу JDBC

Как я могу обрабатывать множество соединений без увеличения размера пула?

using (var connection = ExternalDBConnectionManager.getConnection()){ 
     using (var prepStatement = connection.prepareStatement(queryToExecute)){ 
     ... 
    } 
} 

Эта функция вызывается каждые 100 строк или более, но для примера я хотел бы запустить эту каждую строку (т.е. 500 строк, один вызов для каждого) - (это означает, вызывать эту функцию 500 раз то же соединение)

+1

Что вы хотите сказать? Вы спрашиваете, как создать пакет в JDBC? – bradimus

ответ

0

Universal Connection Pool (UCP) - это пул соединений Java, который богат функциями и тесно интегрирован с архитектурой баз данных Oracle RAC, Oracle DG, Oracle ADG, обеспечивающими высокую доступность, отказоустойчивость и производительность.

Это автономный ucp.jar, который необходимо использовать с драйвером JDBC.
На UCP есть некоторые документы, а также их возможности на OTN.

0

Вы должны прочитать о пуле соединений, чтобы понять, как они работают. Здесь есть сотни тем, посвященных SO, которые относятся к этому. Быстрый поиск Google «понимания Java пулов соединений» вызывает небольшое описание того, как один из библиотек могут работать: How Connection Pooling Works

Некоторые подробнее об этом СЦ теме: How to establish a connection pool

В принципе, ваши клиентские запросы приходят в , вы получаете соединение из пула, вы выполняете операцию sql, и когда вы закрываете соединение, он возвращает его обратно в пул. Это высокий уровень.

Если вы хотите совместить это с дозированием, это становится немного сложнее, поскольку вы будете захватывать данные, вставлять их в пакет и затем запускать send/commit, когда у вас есть определенное количество данных в партии.

Это действительно зависит от того, что вы хотите, чтобы ваши клиенты видели, им нужно подтверждение при записи записи?

С пулом, менее вероятно, что вам потребуется использовать пакетную обработку, вам просто нужно настроить размер пула соединений для вашей среды.

Существует несколько автономных библиотек пулов (C3PO и DBCP), и ряд различных сервисов (например, websphere) уже имеет встроенный пул. Я считаю, что драйвер Oracle jdbc является возможностью сделать это за вас.

0

Вы упомянули «партию». Обычно партии не используют пул соединений, зарезервированных для приложений OLTP. Это связано с тем, что пул соединений работает хорошо, если соединения заимствованы и выпущены довольно быстро. Баты обычно создают свои собственные соединения, которые остаются открытыми в течение всей жизни партии (что может быть часами).