2013-04-18 3 views
13
  • Каковы преимущества использования инструмента объединения пула JDBC, такого как DBCP или c3p0?Почему нам нужен пул соединений для JDBC?

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

PS: Я строй небольшой javafx приложения обратно закончились крошечные h2 базы данных (5 таблиц).

ответ

10

От ответа Джона Скита к What is the benefit of Connection and Statement Pooling?:

Создание сетевого соединения с сервером базы данных является (относительно) дорого. Аналогично, запрашивая сервер для подготовки SQL-запроса, стоит (относительно) дорого.

Использование пула подключения/заявление, вы можете использовать существующие подключения/подготовленные заявления, чтобы избежать затрат на инициирование соединение, анализ SQL и т.д.

И следующий, из Kent Boogaart's answer:

Я не знаком с C3P0, но выгоды от объединения соединений и заявления включают в себя:

  1. Производительность. Подключение к базе данных дорого и медленно. Объединенные соединения могут быть физически подключены к базе данных и распределены между различными компонентами, которым необходим доступ к базе данных. Таким образом, стоимость подключения выплачивается за один раз и амортизируется по всем потребляющим компонентам .

  2. Диагностика. Если у вас есть одна подсистема, ответственная за подключение к базе данных, становится легче диагностировать и анализировать базу данных .

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

+6

Плагиат отсюда: http: // stackoverflow.com/a/457305/19679 и здесь: http://stackoverflow.com/a/457303/19679. Тебе действительно нравятся слова Джона Скита, не так ли? –

1

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

Смежные вопросы