Resumo MySQL de bloqueio (bloqueios de linha, bloqueios de tabela, fecho optimista, fecho pessimista)

Uma breve bloqueio

A partir da granularidade do bloqueio pode ser dividida em duas categorias

Bloqueio de Linha : grande sobrecarga, bloqueio lento, haverá um impasse, a força de travamento pequeno, baixa probabilidade de conflitos de bloqueio, alta concorrência ler.
bloqueio de tabela : pequena sobrecarga, de bloqueio rápido, não impasse, grande força de fecho, alta probabilidade de conflitos de bloqueio, o baixo grau de simultaneidade.

Linha de nível fechaduras
de bloqueio no nível da linha é uma fechadura de bloqueio MySQL melhor granularidade, o bloqueio apenas para a representação das linhas da operação corrente. Em nível de linha conflito de bloqueio pode reduzir muito as operações de banco de dados. O tamanho mínimo do seu bloqueio, mas o bloqueio do maior sobrecarga. bloqueio em nível de linha é dividida em bloqueios compartilhados e bloqueios exclusivos.
Características
gastando grande, trancada lento, haverá um impasse; trancando a menor tamanho, menor probabilidade de conflitos de bloqueio, tem o maior grau de concorrência.
Tabela
de nível de tabela granularidade de bloqueio é uma das maiores bloqueio no MySQL bloqueado, representa todo o bloqueio de tabela da operação em curso, que é simples, de baixo consumo de recursos, suportado pela maior parte do motor MySQL. MYISAM e INNODB mais de travamento de suporte de nível da tabela utilizada. Tabela bloqueio no nível de tabela em um bloqueio compartilhado ler (bloqueio compartilhado) e mesa de bloqueio de gravação exclusivo (bloqueio exclusivo).
Possui
uma pequena sobrecarga, bloqueio rápido, não impasse; bloquear tamanho grande, a probabilidade de conflitos de bloqueio questão da maior e menor grau de concorrência.

Linha de bloqueio e impasse:

Quando as duas transacções ao mesmo tempo, um dice de chave bloqueada primário, à espera para os outros índices. Outra bloqueado de dice de chave não primário, esperando o índice chave primária. um impasse tal ocorre.

bloqueios compartilhados e bloqueios exclusivos:

fechaduras Share (Compartilhar Lock)
bloqueios compartilhados, também conhecido como o bloqueio e operação bloqueio de leitura criado. Outros usuários simultaneamente podem ler os dados, mas não existem dados de transação não pode ser modificado (para obter um bloqueio exclusivo sobre os dados), até que todos os bloqueios compartilhados foram liberados.
Se os dados de transação T para A plus bloqueio compartilhado, outras transações só pode compartilhar mais Um bloqueio não pode adicionar bloqueio exclusivo. Concedida uma transação bloqueio compartilhado só pode ler dados, os dados não podem ser modificados.

用法 SELECT ... LOCK IN SHARE MODE;

Aumentar após a consulta LOCK IN SHARE MODE, consulta MySQL irá resultar em cada linha compartilhada fechaduras, quando nenhuma outra linha de fio conjunto de resultados de consulta ao usar bloqueio exclusivo, bloqueio compartilhado pode ser aplicado com sucesso, caso contrário, ele será bloqueado . Outros tópicos também pode ser lido usando uma tabela bloqueio compartilhado, e ler estas linhas é a mesma versão dos dados.

Exclusivo bloqueio (bloqueio exclusivo)
bloqueio exclusivo, também conhecido como um bloqueio de gravação, se os dados de transação T para A plus bloqueio exclusivo depois, outras transações não pode ser qualquer um A mais qualquer tipo de bloqueio. Ambos aprovaram a transação dados da linha ler seus cabelos, mas também modificar os dados.
Use SELECT ... FOR UPDATE;

Aumentar após a consulta FOR UPDATE, o MySQL irá consultar os resultados em cada linha, mais bloqueio exclusivo, quando não há linha de outros segmentos do conjunto de resultados da consulta é usado exclusivamente quando o bloqueio pode ser aplicado com sucesso para um bloqueio exclusivo, caso contrário ele será bloqueado.

De acordo com o uso, ele pode ser dividido em duas categorias:

bloqueio otimista : bloqueio otimista é um tipo de pensamento, como o próprio nome indica: que a situação não irá atualizar os dados bloqueado, se encontrarmos algo errado, ele não atualização (rollback). Muitas vezes, adicionar um campo de versão no banco de dados de alcançar.

bloqueio pessimista : o uso de bloqueio pessimista é o bloqueio de linha no banco de dados que o conflito de simultaneidade de banco de dados ocorre, os dados colocados diretamente até fechaduras, outras transações não podem ser modificados até à apresentação da transação corrente

Publicado 114 artigos originais · ganhou elogios 16 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/weixin_44026997/article/details/105093178
Recomendado
Clasificación