Совет. Пулы соединений SQL Server и Oracle используют механизм полнотекстового сравнения. Это значит, что любое минимальное изменение в строке соединения нарушает пул, даже если в ней просто изменяется порядок параметров или добавляется дополнительный пробел в конце. По этой причине, важно не кодировать жестко строки соединений на различных Web-страницах. Вместо этого вы должны сохранять строку соединения в одном месте — предпочтительно в разделе <connectionString> файла web.config.
В обоих провайдерах данных — SQL Server и Oracle — пулы соединений включаются и используются автоматически. Однако вы также можете использовать параметры строки соединения для настройки размеров пула. Эти параметры описаны в табл. 7.2.
Таблица 7.2. Настройки пулов соединений.
| Настройка | Описание |
|---|---|
| Max Pool Size |
Максимальное количество соединений, разрешенных в пуле (по умолчанию
100). Если достигается максимальный размер пула, любые последующие
попытки открыть соединение помещаются в очередь в ожидании освобождения
соединения. (Если время длительностью Connection.Timeout истекает
перед тем, как освободится такое соединение, возникает ошибка.) |
| Мin Pool Size |
Минимальное количество соединений, которые должны оставаться в пуле
(по умолчанию 0). Это число соединений будет создано при первом открытии
соединения, что сокращает время ожидания лри первом обращении. |
| Pooling |
При значении true (по умолчанию) соединение выводится из
соответствующего пула, или, при необходимости, создается и добавляется в
соответствующий пул. |
| Connection Lifetime | Специфицирует временной интервал в секундах. Если соединение возвращено в пул и его время подключение превысило указанное время жизни, оно
будет разрушено. По умолчанию принято значение 0, что отключает такое
поведение. Это средство удобно, когда вы хотите повторно использовать
большое количество соединений за раз. |
Ниже показан пример строки соединения, устанавливающей минимальный размер пула:
string connectionString = "Data Source=localhost; Initial Catalog=Northwind;" +
"Integrated Security=SSPI;Min Pool Size=10";
SqlConnection con = new SqlConnection(connectionString);
// Получить соединение из пула (если есть)
// или создать пул с 10 соединениями (если: нет).
con.Open();
// Вернуть соединение в пул.
con.Close();
предыдущая следующая страница оглавление
307