DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Artigo SQL Magazine 20 - Gerenciando de locks no SQL Server 2000

Artigo da Revista SQL Magazine - Edição 20.

 

capaSQL20.JPG

 

Clique aqui para ler todos os artigos desta edição

 

Gerenciamento de locks no SQL Server 2000

Eduardo Terra Morelli

Uma das grandes características do SQL Server em sua versão 2000 é a automatização de praticamente todos os ajustes internos. Desta forma, o DBA supostamente não deve se preocupar com questões como alocação de memória para páginas oriundas dos arquivos, dimensionamento de áreas para armazenamento de transações e controle de mecanismos de proteção de dados (para que duas transações não gravem o mesmo dado ao mesmo tempo), dentre outras. Entretanto, dois problemas são bastante comuns em ambientes onde muitos usuários trabalham de forma concorrente: espera e deadlocks (ler Nota 1). Para esses casos, se deixarmos a resolução por conta do gerenciador, podem ocorrer demoras indesejáveis e, conseqüentemente, grande volume de retrabalho.

 

Nota 1. Deadlock

Trata-se de um termo largamente utilizado em publicações técnicas em português, cuja tradução literal seria algo como “espera até a morte”, significando um impasse sem solução.

 

Este artigo visa esmiuçar a gerência de locks realizada pelo SQL Server 2000 para que seja possível tomar medidas que minimizem os problemas citados acima.

Espera-se que o leitor já tenha alguma vivência em SQL Server, conhecendo suas principais ferramentas tais como Query Analyzer ou Enterprise Manager.

Fundamentos

Os dois problemas que motivaram esta matéria, a espera (blocking) e deadlocks, costumam ser confundidos. O primeiro acontece quando um usuário deve aguardar enquanto outro “prende” recursos que ele precisa. Por exemplo, suponha dois usuários, Zebedeu e Epaminondas, que precisem alterar o mesmo dado ao mesmo tempo. Enquanto o primeiro atualiza, o segundo aguarda sua vez, já que um dado não pode ser alterado por mais de um usuário ao mesmo tempo.

O fato de um usuário esperar não chega a ser um problema, já que decorre da convivência entre vários usuários, ou mais tecnicamente, da concorrência. Mas, caso essas esperas comecem a acontecer com muita freqüência e com grandes durações, os usuários passarão a reclamar. Uma analogia para o fenômeno descrito seria um sinal de trânsito em um cruzamento movimentado. Enquanto os veículos de uma via passam, os da outra aguardam.

Já deadlock resulta em espera mútua sem perspectiva de solução. Por exemplo, analise o código proposto na Tabela 1.

 

Tabela 1. Duas conexões em espera mútua.

Conexão 1

Conexão 2

begin transaction

   update historico set nota = 10

   select * from alunos

begin transaction

   update alunos set tel_aluno = ''

"



ATENÇÃO! A exibição deste artigo foi interrompida.


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Equipe Devmedia

Noticias/Dicas/Artigos publicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
2   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03