Compartilhar via


Definindo o nível de isolamento da transação

Para definir o nível de isolamento da transação, um aplicativo usa o atributo de conexão SQL_ATTR_TXN_ISOLATION. Se a fonte de dados não der suporte ao nível de isolamento solicitado, o driver ou a fonte de dados poderá definir um nível mais alto. Para determinar quais níveis de isolamento de transação uma fonte de dados dá suporte e qual é o nível de isolamento padrão, um aplicativo chama SQLGetInfo com as opções SQL_TXN_ISOLATION_OPTION e SQL_DEFAULT_TXN_ISOLATION, respectivamente.

Níveis mais altos de isolamento de transação oferecem a maior proteção para a integridade dos dados do banco de dados. As transações serializáveis são garantidas como não afetadas por outras transações e, portanto, garantidas para manter a integridade do banco de dados.

No entanto, um nível mais alto de isolamento de transação pode causar um desempenho mais lento porque aumenta as chances de que o aplicativo precise aguardar a liberação de bloqueios nos dados. Um aplicativo pode especificar um nível inferior de isolamento para aumentar o desempenho nos seguintes casos:

  • Quando pode ser garantido que não existem outras transações que possam interferir nas transações de um aplicativo. Essa situação ocorre apenas em circunstâncias limitadas, como quando uma pessoa em uma pequena empresa mantém arquivos dBASE que contêm dados de pessoal em um computador e não compartilham esses arquivos.

  • Quando a velocidade é mais crítica do que a precisão e os erros provavelmente serão pequenos. Por exemplo, suponha que uma empresa faça muitas vendas pequenas e que vendas grandes sejam raras. Uma transação que estima o valor total de todas as vendas abertas pode usar com segurança o nível de isolamento Read Uncommitted. Embora a transação inclua ordens que estão sendo abertas ou fechadas e posteriormente revertidas, elas geralmente se anulam e a transação seria muito mais rápida, pois não é bloqueada sempre que encontra tal ordem.

Para obter mais informações, consulte Simultaneidade Otimista.