? Em um sistema de gerenciamento de banco de dados relacional (RDBMS) , como um banco de dados baseado em SQL , "bloqueia" são utilizados para impedir que os usuários modifiquem os mesmos dados ao mesmo tempo . Se um determinado conjunto de dados é fechado, ele não pode ser manipulada por um utilizador diferente até que o utilizador inicial leva a fechadura . Outras restrições podem ser aplicadas , como impedindo que outros usuários a leitura de dados até que seja desbloqueado, e há exceções a esta regra de bloqueio geral. Existem seis tipos de bloqueios em SQL. Shared Locks (S)
um bloqueio compartilhado contém dados para um único usuário para ler. Outros usuários não podem modificar os dados que são realizadas sob um bloqueio compartilhado , mas eles são capazes de ler os dados. Uma vez que os dados tenham sido lidos, o bloqueio é geralmente abandonado , com algumas exceções, como se a transação for executado usando nível de isolamento READCOMMITTEDLOCK bloqueio a READCOMMITTED ou . Bloqueios compartilhados são utilizados em operações somente leitura somente, e não pode ser usado para modificar os dados.
Exclusivo Locks ( X)
Um bloqueio exclusivo é usado para prevenir uma seção de dados que está sendo modificada por uma transação de ser modificada por outra transação. Por padrão, os dados sob um bloqueio exclusivo não pode ser lido por qualquer pessoa que não seja o vestiário, no entanto, este cenário pode ser alterado usando a dica NOLOCK ou um nível de isolamento READUNCOMMITTED . Este tipo de bloqueio seria usado com operações como INSERT, UPDATE e DELETE.
Atualize Locks (U)
um bloqueio de atualização fica no meio - chão entre um bloqueio compartilhado e um bloqueio exclusivo . Se algum dos dados tem um bloqueio exclusivo sobre ele , nenhum outro bloqueio pode ser colocado sobre ele. Um bloqueio de atualização pode ser colocado em um bloqueio que já tem um bloqueio compartilhado sobre ele , e quando chega a hora de fazer atualizações para os dados , a atualização mudanças de bloqueio em um bloqueio exclusivo . Apenas um bloqueio de atualização pode ser colocado em um recurso em um determinado momento .
Bloqueios intencionais (I)
um bloqueio intencional permite uma operação para notificar outra transação de sua intenção de bloquear os dados - " . bloqueio Intent " daí o nome Eles trabalham impedindo transações de bloqueio mais operações de bloqueio de uma parte superior do banco de dados . Por exemplo, colocar um bloqueio intencional sobre a mesa impede uma outra operação de colocar um bloqueio exclusivo da tabela, o que iria cancelar um bloqueio em uma parte inferior , como uma linha ou uma página.
Esquema Locks ( Sch ) e atualização em massa Locks ( BU )
bloqueios de esquema são usados com uma operação que requer o esquema da tabela está sendo executado. Existem dois tipos - um bloqueio de estabilidade do esquema ( Sch -S) , que não bloqueia o acesso aos dados do objeto , e uma modificação do esquema de bloqueio , que faz bloquear o acesso aos dados do objeto. Um bloqueio de atualização em massa , como o nome indica , é usada por operações em massa , como os dados de cópia em massa, e quando a dica TABLOCK foi especificado.