Compartilhar via


Pool de conexões com reconhecimento de driver

O pool de conexões com reconhecimento de driver é um novo recurso do Gerenciador de Driver no Windows 8. O pool de conexões com reconhecimento de driver permite que os gravadores de driver personalizem o comportamento do pool de conexões em seu driver ODBC.

Observação

O pool de conexões com reconhecimento de driver não é suportado com a biblioteca de cursores. Um aplicativo receberá uma mensagem de erro se tentar habilitar a biblioteca de cursores via SQLSetConnectAttr, quando o pool de conexões com reconhecimento de driver estiver habilitado.

O pool de conexões com reconhecimento de driver resolve os seguintes problemas relacionados ao pool de conexões do Gerenciador de drivers:

Fragmentação do pool O Gerenciador de drivers só retornará uma conexão do pool se for uma correspondência exata com a cadeia de conexão de uma nova solicitação de conexão. Uma razão para o Gerenciador de Driver exigir uma correspondência exata é que o Gerenciador de Driver não entende cada palavra-chave da cadeia de conexão específica do driver e seu valor. No entanto, alguns valores de palavra-chave de cadeia de conexão (como o nome do banco de dados) podem não exigir uma correspondência exata, já que o driver pode alterar o banco de dados em menos tempo do que o necessário para abrir uma nova conexão (a diferença de tempo exata depende da fonte de dados). Além disso, as diferenças em alguns atributos de conexão (como SQL_ATTR_CURRENT_CATALOG) podem levar mais tempo para serem alteradas do que as diferenças em outros atributos (como SQL_ATTR_LOGIN_TIMEOUT). Isso também pode impedir que o Gerenciador de Driver use a conexão reutilizável de menor custo do pool. Quando um driver precisa criar muitas conexões, o desempenho de um aplicativo pode diminuir e a escalabilidade da fonte de dados pode diminuir. É possível reduzir a fragmentação do pool com o pool de conexões com reconhecimento de driver, pois um driver pode estimar melhor o custo da reutilização de uma conexão no pool para uma solicitação de conexão.

Sem consideração da preferência do aplicativo Algumas fontes de dados podem abrir com eficiência novas conexões (em comparação com a redefinição de alguns atributos), portanto, um aplicativo pode preferir abrir uma nova conexão em vez de tentar reutilizar uma conexão ligeiramente incompatível do pool e redefinir alguns valores (embora esse processo possa ser mais lento durante a frase de inicialização do pool de conexões). Mas alguns aplicativos podem manter a carga do servidor menor e abrir menos conexões, embora possa haver um custo maior para corrigir as incompatibilidades para o comportamento correto. Sem o pool de conexões com reconhecimento de driver, você não pode especificar esse tipo de preferência de forma eficaz, porque o Gerenciador de Driver não reconhece todos os atributos de conexão específicos do driver. O pool de conexões com reconhecimento de driver permite que um driver obtenha a preferência do usuário (com um atributo específico do driver SQLSetConnectAttr) para que ele possa estimar melhor o custo da reutilização de uma conexão do pool com base nessa preferência.

Para obter mais informações sobre o pool de conexões com reconhecimento de driver, confira Desenvolvendo reconhecimento de pool de conexão em um driver ODBC.

Determinar o suporte ao driver

O pool de conexões com reconhecimento de driver é um recurso opcional que um driver pode não suportar. Para determinar se um driver oferece suporte a ele, use o InfoType SQL_DRIVER_AWARE_POOLING_SUPPORTED do SQLGetInfo.

Como habilitar o pool de conexões com reconhecimento de driver

Um aplicativo pode usar o reconhecimento de pool de conexões de um driver definindo o atributo SQL_ATTR_CONNECTION_POOLING como SQL_CP_DRIVER_AWARE com SQLSetEnvAttr. Se um driver não oferecer suporte ao reconhecimento do pool de conexões, o pool de conexões do Gerenciador de Driver será usado (o mesmo que se SQL_CP_ONE_PER_HENV tivesse sido especificado, em vez de SQL_CP_DRIVER_AWARE). Os aplicativos ODBC 2.x e 3.x podem habilitar esse recurso.

Confira também

Desenvolvendo um driver ODBC