Hoje, todos os SGBDs modernos utilizam essa técnica de bloqueio.
O esquema de bloqueio binário que explicamos é muito restritivo para itens de banco de dados porque, no máximo, uma transação pode manter um bloqueio em determinado item. Devemos permitir que várias transações acessem um mesmo item de dados, caso todas elas acessem esse item de dados apenas para fins de leitura. Isso porque as operações de leitura no mesmo item por diferentes transações não estão em conflito.
Contudo, se uma transação tiver de gravar um determinado item de dado, ela precisa ter acesso exclusivo a ele. Para essa finalidade, um tipo diferente de bloqueio é utilizado. Nesse esquema, denominado de bloqueio compartilhado (ou exclusivos, ou ainda denominado de bloqueio de leitura/gravação), existem três operações de bloqueio:
Bloqueia o item para leitura (e consequentemente para gravação também). Esse bloqueio é desejado para um item de dados que será alterado pela transação. Não será possível ler o item de dado até que o mesmo seja liberado (desbloqueado).
XÉ um bloqueio menos restritivo do que o anterior, permite ler o item de dado, mas não alterá-lo. Dessa forma, outras transações podem ler o item de dados, mesmo que a transação inicial ainda esteja sendo executada. Nenhuma outra transação poderá ler o dado até que o mesmo seja desbloqueado.
XEste comando desbloqueia um dos dois tipos de bloqueio apresentado. Permite que outras transações possam controlar o item de dado, efetuando, por exemplo, um dos dois tipos de bloqueio citados. Esse comando geralmente é aplicado no fim da transação, seja pelo comando commit ou pelo comando rollback.
X