Spec-Zone .ru
спецификации, руководства, описания, API

22.2.5.4. Используя Соединитель/Сеть с Объединением в пул Соединения

Соединитель/Сеть поддерживает объединение в пул соединения для лучшей производительности и масштабируемости с интенсивными базой данных приложениями. Это включается по умолчанию. Можно выключить это или скорректировать его показатели производительности, используя опции строки подключения Pooling, Connection Reset, Connection Lifetime, Cache Server Properties, Max Pool Size и Min Pool Size. См. Раздел 22.2.5.2, "Создавая Строку подключения Соединителя/Сети" для дополнительной информации.

Объединение в пул соединения работает, сохраняя собственное соединение с сервером, живым, когда клиент избавляется от a MySqlConnection. Впоследствии, если новое MySqlConnection объект открывается, он будет создаваться из пула соединения, вместо того, чтобы создать новое собственное соединение. Это улучшает производительность.

Направляющие линии

Чтобы работать как разработано, лучше позволять системе объединения в пул соединения управлять всеми соединениями. Не создавайте глобально доступный экземпляр MySqlConnection и затем вручную откройте и закройте это. Это вмешивается в способ, которым объединение в пул работает и может привести к непредсказуемым результатам или даже исключениям.

Один подход, который упрощает вещи, должен избежать вручную создавать a MySqlConnection объект. Вместо этого используйте перегруженные методы, которые берут строку подключения в качестве параметра. Используя этот подход, Соединитель/Сеть автоматически создаст, откроет, закроет и уничтожит соединения, используя систему объединения в пул соединения для лучшей производительности.

Введенные Наборы данных и MembershipProvider и RoleProvider классы используют этот подход. Большинство классов, у которых есть методы, которые берут a MySqlConnection как параметр, также имейте методы, которые берут строку подключения в качестве параметра. Это включает MySqlDataAdapter.

Вместо ручного создания MySqlCommand объекты, можно использовать статические методы MySqlHelper class. Они берут строку подключения в качестве параметра, и они полностью поддерживают объединение в пул соединения.

Использование ресурсов

Запускаясь с MySQL, Connector/Net 6.2, есть фоновое задание, которое работает каждые три минуты и удаляет соединения из пула, которые были неактивны (неиспользованный) больше трех минут. Уборка пула освобождает ресурсы на обеих сторонах клиента и сервера. Это - то, потому что на стороне клиента каждое соединение использует сокет, и на стороне сервера каждое соединение использует сокет и поток.

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