Bloquear: Quais são bloqueio pessimista e bloqueio otimista

prefácio

Índice e bloqueios são dois bancos de dados de conhecimento do núcleo, seja no trabalho ou na entrevista, vamos lidar com eles muitas vezes.
No entendimento dos quatro princípios transações ACID e diferentes níveis de isolamento, sabemos que esses níveis de isolamento são alcançados por um bloqueio para completa, então você ainda não pensou sobre isso que precisamos para travá-lo com os dados?

A finalidade de travamento

O bloqueio é para garantir a consistência dos dados, essa idéia também é importante para o desenvolvimento do programa de campo. Haverá ainda um problemas de sincronização multi-thread em desenvolvimento do programa. Quando vários segmentos acessar simultaneamente um conjunto de dados, especialmente para alguns dados sensíveis (como a ordem, quantidade, etc.), é preciso garantir que estes dados podem ocupar apenas um fio a qualquer momento durante a visita, e garantir a integridade dos dados consistência.

Divididos de acordo com a granularidade de bloqueio

Bloqueio para bloquear os dados, dividir bloquear o objeto de bloqueio a partir do tamanho de partícula, respectivamente, bloqueios de linha, página e bloqueios de tabela.

1, bloqueios de linha: de fechadura de acordo com o tamanho da linha de dados. intensidade de bloqueio, baixa probabilidade de bloqueios de conflito, alta simultaneidade pode ser alcançada, mas a sobrecarga é relativamente grande para o bloqueio, o bloqueio será relativamente lento, propenso a um impasse.
2, bloqueios de página: bloqueio sobre o tamanho de página, o recurso de dados para ser bloqueado linhas do que fechaduras, uma vez que uma página pode ter uma pluralidade de linhas. Ao usar o bloqueio de página, os dados aparece o fenômeno de resíduos, mas um desperdício que é até as linhas de dados em uma página. bloqueios de página sobrecarga entre tabela e de linha fechaduras, haverá um bloqueio. O tamanho das partículas situa-se entre as de bloqueio e fechaduras fileira na tabela, a simultaneidade geral.
3, bloqueio de tabela: o bloqueio de tabela de dados, o tamanho grande de bloqueio, a probabilidade de conflito de bloqueio simultâneo será alta, o acesso de dados de baixo simultaneidade. Benefício é o uso de sobrecarga de bloqueio é pequeno, o bloqueio será em breve.

Diferentes bases de dados e diferentes suportes de motor de armazenamento a granularidade do bloqueio. InnDB e Oracle fila de suporte e de mesa fechaduras. O único apoio MyISAM tabela fechaduras, MySQL nas BDB motor de armazenamento bloqueios de página apoios e bloqueios de tabela. servidor SQL pode suportar bloqueios de linha, bloqueios de página e bloqueios de tabela ao mesmo tempo.
Tal como mostrado abaixo:
Aqui Insert Picture Descrição
cada nível da fechadura de dados é limitada, porque a fechadura irá ocupar espaço de memória, o tamanho do espaço de bloqueio é limitada. Quando um certo número de fechaduras excede o nível de limiar de este nível, que vai bloquear o escalonamento. Escalonamento de bloqueio é usar maiores esforços para substituição de bloqueio bloqueio de múltiplos esforços menores, como o Bank of China InnDB escalonamento de bloqueio para um bloqueio de tabela, os benefícios de fazê-lo é reduzir o espaço ocupado pelo bloqueio, mas ao mesmo grau de dados de simultaneidade também diminuiu.

divisão de bloqueio a partir da perspectiva da gestão de banco de dados

divisão de bloqueio a partir da perspectiva da gestão de banco de dados, é dividido em:

(1) um bloqueio compartilhado: Também chamado um bloqueio de leitura ou bloqueios S. Shared bloqueia recursos pode ser lido por outros usuários, mas não pode ser modificado. Durante o tempo de seleção, o objeto será bloqueios compartilhados, quando os dados foi lido, ele vai liberar o bloqueio compartilhado, de modo a garantir que os dados não é modificado durante a leitura.

(2) Bloqueio Exclusivo: também chamado bloqueio exclusivo, bloqueio de gravação ou de bloqueio X. dados de bloqueio bloqueio exclusivo só permite transacções que utilizam a operação de fecho, outras operações não pode ser consultado ou modificações para os dados bloqueados.

Nota: Adicione a tabela bloqueio exclusivo, apenas para obter um transações bloqueio exclusivo pode consultar ou modificar tabelas, outras coisas se você quiser consultar os dados na tabela, temos de esperar.

Intenção fechaduras : isto é uma esquemática nível maior do espaço interior foi de se o bloqueio.
Se somarmos os dados para um bloqueio exclusivo linha, o banco de dados irá automaticamente dar um espaço maior, como páginas de dados, ou tabela de dados mais bloqueios intenção, dizer às outras pessoas esta página de dados ou dados de folhas já tinha sido em exclusivo bloqueio, por isso, quando outras pessoas querem obter o bloqueio exclusivo tabela de dados, só preciso saber se alguém tem a intenção de obter o bloqueio exclusivo na tabela de dados pode ser.

Se a transação você deseja adquirir um bloqueio compartilhado alguns registros na tabela de dados, você precisa adicionar um bloqueio intenção compartilhado sobre a mesa.
Se você deseja obter o exclusivo tabela de dados de transação de bloqueio alguns registros, você precisa adicionar em uma folha de dados bloqueio exclusivo intenção.
Neste momento, intenção de bloqueio irá dizer outras transações já foi preso alguns dos registros na tabela não pode ser uma varredura completa da tabela da tabela inteira.

Bloqueio dividido a partir da perspectiva de um programador

Do ponto de vista do programador para ver se o bloqueio, o bloqueio pode ser dividido em bloqueio otimista e pessimista, o nome pode ser visto a partir do modo de pensar destes dois bloqueios olhar para a simultaneidade de dados.

(1) bloqueio otimista: pense de operações simultâneas sobre os mesmos dados nem sempre acontece, é um pequeno evento de probabilidade, nem sempre bloquear os dados, isto é, sem usar o próprio banco de dados bloqueio mecanismo, mas implementado por um programa. No programa, podemos usar o número da versão do mecanismo de carimbo de tempo ou mecanismos de alcançar.

Otimistas direitos programadores de bloqueio para controlar os seus próprios dados operações simultâneas, basicamente, adicionando uma linha para o selo de dados (carimbo de tempo ou número de versão), provando assim se o atual para obter os dados mais recentes.

(2) bloqueio pessimista: é uma idéia, os dados são mantidos por uma abordagem conservadora para modificar outros assuntos, será implementado pelo próprio banco de dados bloqueio mecanismo, de modo a garantir a manipulação de dados exclusivo.
Aqui Insert Picture Descrição

travamento optimista e pessimista de cenários de aplicação

1, fecho mais otimista para a cena operação de leitura, relativamente falando, escrevendo operação é relativamente pequeno. Sua vantagem é que a implementação do programa, o impasse não é um problema, mas será relativamente otimista cenário se aplica, exceto que ele não pode impedir as operações de banco de dados do programa.
2, de bloqueio pessimista para escrever muitos cenários de funcionamento, porque o exclusivo operação de gravação. Usando modo de bloqueio pessimista, você pode evitar que outra autoridade transações para operar os dados no nível de banco de dados, para evitar ler - escrever e escrever - write conflitos.

Nota: bloqueio otimista e pessimista não é um bloqueio, mas o design de bloqueio.

A fechadura está presente, pode ocorrer um impasse.
Impasse : é o fenômeno de múltiplas transações (ou seja, se mais de um processo no nível do programa) no processo de implementação, porque uma mesma competição de recursos causada pela obstrução. Um impasse ocorre, muitas vezes por causa de uma transação, o bloqueio está adquirindo gradualmente a. Em outras palavras, quando várias transações para obter bloqueios de leitura para os mesmos dados podem impasse situação pode ocorrer.
Resolver um impasse : Quando ocorre um impasse, você precisa realizar uma reversão de transação, outra transação para completar a transação para adquirir o bloqueio, e em seguida, liberar o bloqueio off, muito parecido com um engarrafamento quando as soluções.

Algumas das maneiras de impasse evitar ocorreu:

1, se a transação envolve mais de uma tabela, a operação é mais complicado, você pode tentar bloquear todos os recursos, uma vez, ao invés de gradualmente adquirir, reduzindo assim a probabilidade de ocorrência de impasse.
2, se as necessidades de transacção para ser actualizado a maior parte dos dados na tabela de dados, folhas de dados e relativamente grandes, métodos de escalonamento, em seguida, de bloqueio pode ser utilizado, tais como fechaduras no nível da linha serão actualizados em uma fechadura de nível de tabela, reduzindo desse modo a probabilidade de bloqueio.
3, uma pluralidade de diferentes operações simultâneas ler e escrever a tabela de dados, a tabela pode concordar acesso sequencial, reduzindo a probabilidade da mesma ordem de impasse.

resumo

Várias transações de uma competição pelos mesmos recursos irá causar obstrução impasse no processo de implementação, por isso precisamos de encontrar uma maneira de evitar um impasse ocorre. No entanto, na base de dados, há algumas circunstâncias não é um bloqueio ocorre, tal como o modo de bloqueio optimista utilização. Há também não é um impasse no mecanismo de armazenamento do MySQL MyISAM, porque MyISAM é sempre tempo de acesso a todas as fechaduras, para que possa atender tanto todos executados ou necessidade de esperar por todas.

Neste artigo referem-se ao conteúdo do currículo geeks são convidados a partilhar na seção de comentários para aprender juntos ~

Ele publicou 189 artigos originais · ganhou elogios 212 · vista 90000 +

Acho que você gosta

Origin blog.csdn.net/Sophia_0331/article/details/105343597
Recomendado
Clasificación