Partilhar via


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

Para definir o nível de isolamento da transação, uma aplicação utiliza o atributo de ligação SQL_ATTR_TXN_ISOLATION. Se a fonte de dados não suportar o nível de isolamento solicitado, o driver ou fonte de dados pode definir um nível superior. Para determinar quais os níveis de isolamento de transações que uma fonte de dados suporta e qual é o nível padrão de isolamento, uma aplicação chama SQLGetInfo com as opções SQL_TXN_ISOLATION_OPTION e SQL_DEFAULT_TXN_ISOLATION, respetivamente.

Níveis mais elevados de isolamento de transações oferecem a maior proteção para a integridade dos dados da base de dados. As transações serializáveis garantem que não serão afetadas por outras transações e, por isso, garantem a manutenção da integridade da base de dados.

No entanto, um nível mais elevado de isolamento das transações pode causar um desempenho mais lento, pois aumenta as hipóteses de a aplicação ter de esperar que os bloqueios nos dados sejam libertados. Uma aplicação pode especificar um nível inferior de isolamento para aumentar o desempenho nos seguintes casos:

  • Quando se pode garantir que não existem outras transações que possam interferir com as transações de uma aplicação. Esta situação ocorre apenas em circunstâncias limitadas, como quando uma pessoa numa pequena empresa mantém ficheiros dBASE que contêm dados de pessoal num computador e não partilha esses ficheiros.

  • Quando a velocidade é mais crítica do que a precisão e quaisquer erros provavelmente serão pequenos. Por exemplo, suponha que uma empresa faz muitas pequenas vendas e que as grandes vendas são raras. Uma transação que estime 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 a ser abertas ou fechadas e depois revertidas, estas geralmente cancelam-se mutuamente, e a transação seria muito mais rápida porque não é bloqueada a cada vez que encontra essas ordens.

Para mais informações, consulte Concorrência Otimista.