Пул соединений медленнее, чем держать одно соединение открытым

Я наблюдал интересное поведение производительности пула соединений в клиентском приложении, которое мы создали. Когда пользователь нажимает на объект, из базы данных загружается больше данных для конкретного объекта. Это занимает от 10 до 30 запросов на клик в зависимости от объекта.

Это было сделано с помощью пула соединений, и каждый запрос отправлялся по новому соединению из пула, и соединение было закрыто после выполнения запроса.

Я проанализировал запросы в профилировщике для оптимизации производительности и увидел, что там много записей входа / выхода из аудита. Кроме того, производительность не была оптимальной, хотя сами запросы выполнялись хорошо (только операторы поиска / сканирования индекса).

Я просто отключил пул и изменил код, чтобы сохранить одно соединение на клиентское приложение и использовать его повторно. Это сделало все приложение намного более отзывчивым, и все записи аудита / выхода из системы исчезли из профилировщика.

Как это возможно? Разве соединения не должны оставаться открытыми или если они действительно остаются открытыми, по крайней мере, не так медленно? Возможно ли, что мы используем класс SqlConnection неправильно, что приводит к отключению пула?

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

SqlConnection con = new SqlConnection(_connectionString);

Соединение передается классу Session, который обеспечивает функциональность транзакций.

class Session{
    Session(connection);
    Abort();
    Commit();
}

Соединение закрывается в Abort () и Commit (). Один из них всегда называется.

Ответы на вопрос(1)

Ваш ответ на вопрос