Tipos de controle de simultaneidade

Quando muitas pessoas tentam modificar dados em um banco de dados ao mesmo tempo, um sistema de controles deve ser implementado de forma que as modificações feitas por uma pessoa não afetem adversamente as de outra pessoa. Isso é chamado controle de simultaneidade.

A teoria do controle de simultaneidade tem duas classificações para os métodos de instituição do controle de simultaneidade:

  • Controle de simultaneidade pessimista

    Um sistema de bloqueios impede que os usuários modifiquem os dados de uma forma que afete outros usuários. Depois que um usuário executa uma ação que aplica um bloqueio, outros usuários não podem executar ações que estariam em conflito com o bloqueio até o proprietário liberar o bloqueio. Isso é chamado de controle pessimista porque é principalmente usado em ambientes em que existe contenção elevada dos dados, e que o custo da proteção dos dados com bloqueios é inferior ao custo de reversão de transações, caso ocorram conflitos de simultaneidade.

  • Controle de simultaneidade otimista

    No controle de simultaneidade otimista, os usuários não bloqueiam os dados quando os lêem. Quando um usuário atualiza os dados, o sistema verifica se outro usuário alterou os dados depois de lidos. Se outro usuário tiver atualizado os dados, um erro é ativado. Normalmente, o usuário que recebe o erro reverte a transação e inicia novamente. Isso é chamado de controle otimista porque é usado principalmente em ambientes em que existe contenção reduzida dos dados, e que o custo de reversão ocasional de uma transação é inferior ao custo de bloqueio dos dados quando os mesmos são lidos.

O Microsoft SQL Server oferece suporte a um intervalo de controle de simultaneidade. Os usuários especificam o tipo de controle de simultaneidade selecionando níveis de isolamento da transação para conexões ou opções de simultaneidade em cursores. Esses atributos podem ser definidos usando instruções Transact-SQL, ou pelas propriedades e atributos de APIs (interfaces de programação de aplicativo) de banco de dados, como ADO, ADO.NET, OLE DB e ODBC.

Para obter mais informações sobre simultaneidade em cursores, consulte Simultaneidade do cursor (Mecanismo de Banco de Dados).

Para obter mais informações sobre os níveis de isolamento da transação, consulte Níveis de isolamento no Mecanismo de Banco de Dados.

Consulte também

Conceitos