В чем преимущество соединения и объединения пулов? - PullRequest
16 голосов
/ 19 января 2009

Может ли кто-нибудь объяснить, что такое соединение и пул операторов, и в чем заключается преимущество перед не пулированными источниками данных? Я пытаюсь понять, когда это хорошая идея, чтобы использовать такие технологии, как c3p0 или proxool в проекте. Мне нужно сначала понять, что они делают и когда им интересно пользоваться. Большое спасибо.

Ответы [ 5 ]

50 голосов
/ 19 апреля 2013

Счастливое соединение

Так легко каждый раз создавать новое соединение. Одна строка: это все, что нужно. Нечего особо думать. Великая жизнь.

Держись. Ты ешь на тарелке?

enter image description here

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

Нет, вы моете его и ставите на подставку для посуды, чтобы вы могли использовать его снова при следующем приеме пищи. Покупать новые тарелки каждый раз невозможно. Если вы это сделаете, вы потратите достаточно денег, чтобы купить новый iPad за один год.

Подумайте еще раз о пулах соединений.

Но на этот раз соединения - это ваши планшеты, пул соединений - ваша стойка. Ваш кошелек и ваша энергия представляют системные ресурсы (память и пропускную способность).

мыть или тратить?

Что бы вы предпочли сделать:

а. мыть посуду

б. или бегать в торговый центр каждый прием пищи и покупать новые тарелки?

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

Пулы могут использоваться для соединений с базой данных, потоков, объектов управления данными и других объектов, производных от фабрики.

13 голосов
/ 19 января 2009

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

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

6 голосов
/ 19 января 2009

Я не знаком с c3p0, но преимущества объединения соединений и операторов включают в себя:

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

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

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

3 голосов
/ 19 января 2009

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

Объединение операторов? Вы говорите о кешировании операторов?

1 голос
/ 24 января 2009

Цитирование книги JAVA Persistance с Hibernate

Существует три причины использования бассейн:

  • Получение нового соединения стоит дорого. Некоторое управление базами данных системы даже начать совершенно новый серверный процесс для каждого соединения.

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

  • Создание подготовленных заявлений также дорого для некоторых водителей, и пул соединений может кэшировать операторы для соединений между запросами.

...