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


Driver-Aware пул подключений

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

Замечание

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

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

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

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

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

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

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

Включение пула подключений Driver-Aware

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

См. также

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