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 de pool de conexões em seu driver ODBC.

Observação

Não há suporte para o pool de conexões com reconhecimento de driver com a biblioteca de cursores. Um aplicativo receberá uma mensagem de erro se tentar habilitar a biblioteca de cursores por meio do SQLSetConnectAttr, quando o pool de conexões com reconhecimento de driver estiver habilitado.

O agrupamento de conexões consciente do driver aborda os seguintes problemas relacionados ao agrupamento de conexões do Driver Manager:

Fragmentação do pool O Gerenciador de Driver 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. Um motivo para o Gerenciador de Driver exigir uma correspondência exata é que o Gerenciador de Driver não entende cada palavra-chave de 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, pois o driver pode alterar o banco de dados em menos do que o tempo necessário para abrir uma nova conexão (a diferença de tempo exata depende da fonte de dados). Além disso, diferenças em alguns atributos de conexão (como SQL_ATTR_CURRENT_CATALOG) podem levar mais tempo para serem alteradas do que 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 novas conexões, o desempenho de um aplicativo pode diminuir e a escalabilidade da fonte de dados pode diminuir. A fragmentação do pool pode ser reduzida com o pool de conexões com reconhecimento de driver porque um driver pode estimar melhor o custo de reutilização de uma conexão no pool para uma solicitação de conexão.

Nenhuma consideração sobre a preferência do aplicativo Algumas fontes de dados podem abrir novas conexões com eficiência (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 isso 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 efetivamente, pois o Driver Manager 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 do SQLSetConnectAttr) para que ele possa estimar melhor o custo de reutilizar uma conexão do pool com base na preferência de um usuário.

Para obter mais informações sobre o pool de conexões com reconhecimento de driver, consulte Desenvolvendo Connection-Pool Reconhecimento em um Driver ODBC.

Determinando o suporte ao driver

O agrupamento de conexões ciente do driver é um recurso opcional que o driver pode não suportar. Para determinar se um driver dá suporte a ele, use o SQL_DRIVER_AWARE_POOLING_SUPPORTED InfoType do SQLGetInfo.

Como habilitar o pool de conexões Driver-Aware

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 der suporte à administração de pool de conexões, o pool de conexões do Driver Manager será usado (como se SQL_CP_ONE_PER_HENV fosse especificado ao invés de SQL_CP_DRIVER_AWARE). Os aplicativos ODBC 2.x e 3.x podem habilitar esse recurso.

Consulte Também

Desenvolvendo um driver ODBC