Java: пул соединений с базой данных JDBC - PullRequest
1 голос
/ 20 июля 2011

HI: у меня есть многопоточное приложение базы данных Java, мы должны создать настраиваемый пул баз данных. Причина в том, что некоторые из наших подготовленных заявлений должны быть кэшированы в связи. У нас есть примитивное решение, основанное на одной бесплатной хэш-карте, другой - на заблокированной хэш-карте. С hashmap мы должны использовать синхронизированный метод, тогда на нашу пропускную способность влияют. Выбор заключается в использовании concurrentHashMap, чтобы часть синхронизации была как можно меньше. Есть ли примеры кодов? Или я должен скачать исходные коды apache DBCP для чтения?

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Использование синхронизированных обойдется вам примерно в 1-2 микросекунды. Если это важно для вас, вы не должны использовать JDBC. ПО МОЕМУ МНЕНИЮ. Простой доступ к сервису через TCP-соединение, вероятно, будет стоить 100 микросекунд, а задержка для многих баз данных JDBC составляет 1-10 миллисекунд.

Я подозреваю, что несколько миллисекунд на запрос / обновление подходят для вас, и в этом случае использование синхронизации вряд ли имеет значение.

В зависимости от того, сколько у вас потоков, вы можете иметь локальное соединение для каждого потока. Это максимально снижает накладные расходы.

0 голосов
/ 20 июля 2011

У вас многопоточное приложение, но многие ли потоки используют одно и то же соединение с базой данных одновременно?Поскольку кэш PreparedStatement будет выполняться на уровне подключений, если ваши подключения используются одним потоком за раз (что, я думаю, должно иметь место), вам не требуется синхронизация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...