Пулы соединения с базой данных

Поскольку речь идет о многопользовательских системах то, как мы уже говорили, на примере базы данных ORACLE – одно соединение экземпляра — 6мб и каждый следующий клиент – 500кб оперативной памяти для того чтобы хранить все сведения о соединении.

В последнее время разрабатывать СУБД для подключения 100 и более 1000 пользователей стало экономически невыгодно, пошли по другому пути — создания пулов соединения. Считается, что ресурсы потребляются только активными пользователями. Тот, кто « подключился, но пошел жевать пирожок и болтать о чем-то другом», т.е. активно соединение не использует, он переходит в пассив.

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

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

Пул реализован с помощью ODBC версии 3.5, там есть уже страница пулов, где можно указать время простоя и т.д. и т.д. Кроме того пул организован в системе COM+, которая есть начиная с Windows 2000, есть встроенная MTS (Microsoft Transaction Server), фактически OLE DB в какой-то степени выполняет эту роль. Есть такой параметр MTS Pulling, значение которого хранится в реестре.

Т.о. получается что через каждые промежутки времени опрашиваются соединения, если оно не активно, то переходит в пассив, т.е. оно формально не «отрывается», чтобы не тратить время на само соединение, потому что соединение – длительный ресурс по времени. Это соединение как бы формально не активизируют, т.е. оно ждет, ждет, как только активизируется его сразу подключат, и есть некоторый набор активных соединений. По умолчанию время в размере 60сек отводится до расторжения активной связи.

Еще больше сделано в системе пулов соединения в новой разработке от Microsoft .NET. Там введены минимум, максимум для пула соединений, т.к. раньше пул фактически не был ограничен минимумом и максимумом, «т.е. нужно было больше — создавалось больше». Сейчас есть минимум и максимум, т.е. всегда в системе есть минимальное количество активных соединений. Исходя из ресурсов можно указать и максимальное. Если ресурс превышается, то тогда становится очередь. Допустим 10 – минимум, 50 максимум, если захотел 51-й активизировать, то он будет ждать. Кроме того если раньше в ODBC и в OLE DB соединения организовывались на уровне ресурсов, то начиная с объектно-ориентированных систем, типа .NET(DotNET) соединения стали выглядеть как объекты с присущими ему свойствами, методами.


Оставить комментарий





Статистика

Рейтинг@Mail.ru