Primeiramente o que é um Lock?
A palavra já fala é travar.
Bom vamos falar um pouco mais o que envolve esse travamento em um banco de dados.
Em vários DataBases quando executamos alguma operação DML (update,
insert, delete) nós estamos lockando os dados para a edição, isto
impede que as aplicações e/ou até mesmo usuários não realizarem alteração na
mesma tabela/linha que você. Lembramos que existe o lock de tabela e o
lock de linha.
O lock pode causar travamento da aplicação por qualquer usuário client que estiver realizando algum processo de DML sendo normal, porém se outro dado foi relacionado juntamente a mesma tabela e a mesma linha onde foi disponibilizado um lock ele pode gerar uma parada sem resposta do update, insert,
delete e etc levando o travamento da aplicação e prejudicando todo o ambiente da execução.
Vários bancos tem como critério em utilizar alguns mecanismo para bloquear a alteração de um mesmo dado,
originada por diversas conexões. Quando é criada uma requisição de
acesso a um determinado dado em um database, o banco deve garantir à essa
requisição o acesso irrestrito (lock) ao dado, evitando a possibilidade
de corrupção do dado ou um erro do sistema. Somente termina o evento locado em após realizar (Commit) ou um (Rollback).
Dentro de um lock existem 2 situações como:
Shared Lock: Shared Locks são criados quando uma
requisição de leitura é enviada a um objeto. Múltiplos Shareds Locks
podem ser emitidos a um mesmo objeto, permitindo que mais de um processo
possa ler o dado.
Exclusive Lock: irá “Lockar” o objeto, para que ele possa ser modificado, e irá bloquear todas as demais requisições ao mesmo objeto, seja de leitura ou modificação.
Lembrando novamente que um lock é normal onde sempre existirá para garantir o dado coerente no banco, os locks de travamento são relacionando a lentidão em banco ou até mesmo aplicação que esteja gerando o lock devido uma falha de gerenciamento do banco simultâneo sem sucesso.
Locks podem ocorrer a nível de linhas, páginas de dados e tabelas.
Também existem outros meio de travamento como Blocks e Deadlocks, onde mais para frente irei postar algo relacionado a fundo nesse critério.