Некоторые провайдеры включают методы очистки пула соединений. Например, с помощью SqlConnection вы можете вызывать статические методы ClearPool() и ClearAllPools(). При вызове ClearPool() применяется SqlConnection, и все соответствующие соединения удаляются. ClearAllPools() же очищает все пулы соединений в текущем домене приложения. (Технически эти методы не закрывают соединения. Они просто помечают их как недействительные, так что по истечении тайм-аута они будут закрыты во время обычной очистки соединений, несколькими минутами позже.) Эта функциональность редко используется — обычно единственный случай, когда это имеет смысл — когда вы знаете, что пул полон или подключения стали недействительными (например, в результате перезапуска SQL Server), и вы хотите избежать появления ошибок.
Совет. Пулы соединений SQL Server и Oracle всегда поддерживаются как часть глобальных ресурсов домена приложения. В результате этого все соединения теряются, если домен приложения перезапускается (например, по причине обновления или по достижении некоторого порогового значения). По той же причине пулы соединений не могут повторно использоваться между разными Web-приложениями на одном и том же Web-сервере, или между Web-приложениями и другими приложениями .NET.
Если вы применяете провайдер данных SQL Server, то можете получить некоторую интересную статистическую информацию, используя метод SqlConnection.RetrieveStatistics() (новый в .NET 2.0). Этот метод возвращает хеш-таблицу с различными низкоуровневыми деталями, которые могут помочь вам проанализировать производительность команд и объем выполненной работы. Статистика соединения нечасто используется в развернутых приложениях, но весьма полезна для диагностики производительности на стадии тестирования и профилирования. Например, она предусматривает один инструмент, которые вы можете использовать для определения того, как применяются различные стратегии доступа к данным (другие инструменты включают административные утилиты SQL Server, такие как SQL Profiler и Query Analyzer).
По умолчанию статистика соединений отключена для повышения производительности. Чтобы использовать эту статистику, необходимо установить свойства SqlConnection.StatisticsEnabled равным true. Это сообщает классу SqlConnection о необходимости собирать информацию о каждом выполняемом действии. После этого в любой момент вы можете вызвать метод RetrieveStatistics(), чтобы проверить эту информацию, либо использовать ResetStatisties() для ее очистки и начала накопления "с нуля".
Вот пример, отображающий количество байт, полученных соединением с момента включения статистики:
Hashtable statistics = con.RetrieveStatistics();
lblBytes.Text = "Retrieved bytes: " + statistics["BytesRetrieved"].ToString();
Статистика представлена в форме свободной коллекции пар "имя-значение". Это значит, что вы должны знать специфическое имя статистического показателя, чтобы получить его. Полный список показателей можно найти в документации MSDN, а здесь мы приведем несколько наиболее часто используемых:
предыдущая следующая страница оглавление
308