Sie sind auf Seite 1von 3

D-Blog | Deadlocks em bancos de dados http://ingleses.datasul.com.br/blog/post/2010/02/08/Deadlocks-em-ban...

D-Blog
Banco de Dados e Servidor de Aplicação

Página inicial Arquivo Autores Assinar feeds (RSS)

Expressão para pesquisa Pesquisa


Pesquisar também nos comentários

Deadlocks em bancos de dados


Escrito por Marcos Kirchner em 8 de fevereiro de 2010, 09:03h

Um deadlock é uma situação que ocorre quando dois processos aguardam para utilizar um
recurso que está sendo utilizado pelo outro processo, ou quando mais de dois processos
estão aguardando por recursos de forma circular. Esta situação pode ocorrer com qualquer
tipo de processos que compartilhem recursos mutuamente exclusivos, mas é relativamente
comum em bancos de dados. O objetivo deste post é clarificar esta situação e apresentar
alguns exemplos.

Durante as modificações de dados, os bancos de dados utilizam bloqueios (locks) para


garantir que outros processos não modifiquem/consultem os mesmos dados
simultaneamente. Quando um processo precisa acessar algum dado que está bloqueado por
outro processo, o primeiro deve aguardar até que o segundo conclua suas operações. Este
bloqueio é normal e necessário, e não caracteriza um deadlock. Quando o segundo processo
concluir suas operações os bloqueios serão liberados e o primeiro processo continuará
executando normalmente. Um deadlock ocorre somente quando nenhum dos dois (ou mais)
processos envolvidos pode continuar sua execução sem intervenção externa.

Deadlocks também podem ocorrer nos bancos de dados com recursos como memória e
threads, mas o mais comum é envolvendo locks. Normalmente os sistemas gerenciadores de
bancos de dados possuem mecanismos para detectar e resolver deadlocks.

Abaixo um exemplo simples utilizando o SQL Server. O primeiro processo (tela com fundo
preto) realiza uma alteração no nome do cliente 1, que ocorre normalmente:

Um outro processo (tela com fundo azul) realiza uma alteração no nome do cliente 2, com
sucesso. Em seguida tenta alterar o nome do cliente 1:

Neste momento o segundo processo fica bloqueado, pois o cliente 1 está sendo alterado pelo

1 de 3 17/11/2010 11:19
D-Blog | Deadlocks em bancos de dados http://ingleses.datasul.com.br/blog/post/2010/02/08/Deadlocks-em-ban...

Interoperabilidade Ip Ipv4
Ipv6 Jdbc Lan Licença
License Addendum License
Controller License Server
License Update Limites Locks
Log Memória Ms Access
Mysql Oci Odbc Openedge
Explorer Paginação
Parâmetros Política
De Licencimanto
Portabilidade Probkup
Procopy Produto Datasul
Programas De Acerto Progress
Explorer Promon Propath
Proquiet Prorest Raid O processo 1 estava bloqueando o cliente 1 e esperando para alterar o cliente 2. O processo
R-code R-codekey Rede 2 estava bloqueando o cliente 2 e esperando para alterar o cliente 1. Ambos os processos
Reindexação Rpc Rpw estavam aguardando por um recurso que estava bloqueado pelo outro, e nenhum dos dois
Schema Holder Scripts poderia continuar. O software gerenciador de banco de dados detectou o deadlock e abortou
Sequência Showcfg Sql (ROLLBACK) uma das transações (erro 1205 na tela acima), fazendo com que a outra
Storage Area Swapping transação pudesse continuar.
Terminal Server Timezone
Tipos De Dados Transação O mecanismo de detecção de deadlocks e as mensagens de erro variam de acordo com o
Undo-redo Logging Unicode banco de dados. No Oracle, o seguinte erro é gerado quando um deadlock é detectado:
Usuários Variáveis De Ambiente
ORA-00060: deadlock detected while waiting for resource

Nem todos os gerenciadores de bancos de dados implementam um mecanismo de detecção


Links de deadlocks. O Progress OpenEdge, por exemplo, não implementa. Em um banco de dados
Portal De Clientes Datasul OpenEdge, quando um usuário fica bloqueado ele recebe uma indicação visual, informando
que o registro está bloqueado por outro usuário:
Datasul
Progress
KBases Progress

Outras páginas
Apresentação Da Equipe
Regras Para Comentários

Como não há controle de deadlock, é possível que dois ou mais usuários recebam esta
mesma mensagem, e fiquem um esperando pelo outro.

Existem técnicas para minimizar a ocorrência de deadlocks em bancos de dados.


Normalmente a própria documentação dos bancos de dados contém informações mais
detalhadas sobre o assunto. Consulte sua documentação para mais detalhes.

Avaliação atual é 5.0. Opinião de 1 pessoa(s)

Categorias: Banco de dados

Permalink | Comentários (0) | Comentários do post em RSS

Comentar
Nome*
E-mail*
Site

Comentário Pré-visualização b i u quote

2 de 3 17/11/2010 11:19
D-Blog | Deadlocks em bancos de dados http://ingleses.datasul.com.br/blog/post/2010/02/08/Deadlocks-em-ban...

Me avise quando alguém comentar este post

3 de 3 17/11/2010 11:19

Das könnte Ihnen auch gefallen