Поделиться через


Организация пулов соединений с учетом драйвера

Пул подключений с поддержкой драйверов — это новая функция диспетчера драйверов в Windows 8. Пул подключений с поддержкой драйверов позволяет авторам настраивать поведение пула подключений в драйвере ODBC.

Примечание.

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

Пул подключений с поддержкой драйвера устраняет следующие проблемы, связанные с пулом подключений Диспетчера драйверов:

Диспетчер драйверов пула возвращает только подключение из пула, если оно точно соответствует строка подключения нового запроса на подключение. Одна из причин, по которой диспетчер драйверов требует точного соответствия, заключается в том, что диспетчер драйверов не понимает все строка подключения ключевое слово драйвера и его значение. Однако некоторые значения строка подключения ключевое слово (например, имя базы данных) могут не требовать точного соответствия, так как драйвер может изменить базу данных менее времени, необходимого для открытия нового подключения (точное различие времени зависит от источника данных). Кроме того, различия в некоторых атрибутах соединения (например, SQL_ATTR_CURRENT_CATALOG) могут занять больше времени, чем различия в других атрибутах (например, SQL_ATTR_LOGIN_TIMEOUT). Это также может предотвратить использование диспетчера драйверов с наименьшей стоимостью, повторно используемого подключения из пула. Когда драйверу приходится создавать много новых подключений, производительность приложения может уменьшиться, и масштабируемость источника данных может снизиться. Фрагментация пула может быть сокращена с помощью пула подключений с поддержкой драйверов, так как драйвер может лучше оценить стоимость повторного использования подключения в пуле для запроса подключения.

Не учитывается предпочтения приложения Некоторые источники данных могут эффективно открывать новые подключения (по сравнению с сбросом некоторых атрибутов), поэтому приложение может предпочесть открыть новое подключение вместо попытки повторно использовать несколько несоответствий из пула и сбросить некоторые значения (хотя это может быть медленнее во время фразы инициализации пула соединений). Но некоторые приложения могут уменьшить нагрузку сервера и открыть меньше подключений, хотя может потребоваться больше затрат на исправление несоответствий для правильного поведения. Без пула подключений с поддержкой драйверов нельзя эффективно указать этот тип предпочтения, так как диспетчер драйверов не распознает все атрибуты подключения для конкретного драйвера. Пул подключений с поддержкой драйверов позволяет драйверу получать предпочтения пользователя (с атрибутом SQLSet Подключение Attr), чтобы лучше оценить стоимость повторного использования подключения из пула на основе предпочтений пользователя.

Дополнительные сведения о пуле подключений с поддержкой драйверов см. в статье "Разработка сведений о Подключение пуле" в драйвере ODBC.

Определение поддержки драйверов

Пул подключений с поддержкой драйверов является необязательной функцией, которую драйвер может не поддерживать. Чтобы определить, поддерживает ли драйвер его, используйте SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoTypesqlGetInfo.

Включение пула Подключение с поддержкой драйверов

Приложение может использовать осведомленность о подключении к пулу подключений драйвера, задав атрибут SQL_ATTR_CONNECTION_POOLING для SQL_CP_DRIVER_AWARE с помощью SQLSetEnvAttr. Если драйвер не поддерживает осведомленность о пуле подключений, пул подключений Диспетчера драйверов будет использоваться (то же самое, что и при указании SQL_CP_ONE_PER_HENV вместо SQL_CP_DRIVER_AWARE). Приложения ODBC 2.x и 3.x могут включить эту функцию.

См. также

Разработка драйвера ODBC