Análise de transação MySQL

Análise de transação MySQL

1.1 Visão geral da transação

  • Transação (transação), uma transação é uma unidade de lógica de negócios completa, não pode ser dividida,

Por exemplo: transferência de conta bancária, transferência da conta A para a conta B, você precisa executar dois extratos de atualização,

Uma atualização aumenta,

Uma atualização é reduzida,

As duas atualizações e sentenças acima são bem-sucedidas e fracassam ao mesmo tempo.

É melhor permitir um sucesso e um fracasso,

Para garantir que as duas instruções DML acima tenham sucesso e falhem ao mesmo tempo, você precisa usar o "mecanismo de transação" do banco de dados

  • As instruções relacionadas às transações são apenas linguagem DML, instruções de manipulação de banco de dados, (inserir exclusão de atualização)

Por quê? Como essas declarações estão relacionadas aos "dados" do banco de dados,

A existência de transações é para garantir a integridade e segurança dos dados

  • Se todos os negócios precisam apenas de uma linguagem DML, eles ainda precisam de um mecanismo de transação?

Não há necessidade de negócios;

Mas a situação real não é assim, geralmente uma transação, "negócio", requer várias linguagens DML para completar em conjunto

1.2 Princípio da transação

cinco declarações principais do mysql

  1. Declaração de consulta de banco de dados DQL

  2. Instrução de manipulação de banco de dados DML

  3. Linguagem de definição de banco de dados DDL

  4. TCL (transação: rollback de confirmação) ponto de salvamento ponto de salvamento

  5. DCL: (autorização)

imagem 20200904084955651

1.3 As características da transação

Quatro características da transação ACID

  1. A. ( Atomicidade ) Atomicidade : Uma transação é a menor unidade e não pode ser dividida

  2. Consistência C ( consistência ): A transação deve garantir que várias instruções DML tenham êxito ou falhem ao mesmo tempo.

  3. Isolamento I ( isolamento ): a transação A deve ter isolamento da transação B equivalente ao segmento

  4. D ( durabilidade ): Durabilidade: Durabilidade significa que os dados finais devem ser persistidos no arquivo do disco rígido antes que a transação seja considerada bem-sucedida.

1.4 isolamento de transação

Sobre o isolamento entre transações

Existem níveis de isolamento para o isolamento da transação, que teoricamente incluem quatro:

Na verdade, eles começam em segunda marcha:

  1. O primeiro nível: leitura não confirmada (leitura não confirmada), a transação atual pode ler a transação não confirmada da outra parte

A leitura de dados não confirmados terá um fenômeno de leituras sujas (leituras sujas estão lendo dados sujos que não foram confirmados pela transação anterior): significa que dados sujos foram lidos

  1. O segundo nível: ** Read Committed ** Podemos ler os dados enviados pela transação da outra parte

O problema com a leitura confirmada é: leitura não repetível (leitura não repetível é reler os dados enviados da transação anterior)

  1. O terceiro nível: leituras repetidas (leitura repetível)

Este nível de isolamento resolve: leitura não repetível

Há um problema: os dados lidos são fantasmas

A leitura fantasma (leitura virtual) refere-se à leitura de dados inseridos por outra transação em uma transação, o que resulta em leituras inconsistentes antes e depois.

  1. O quarto nível (serializável): serialização, leitura serializada resolve todos os problemas,

Desvantagens: baixa eficiência e necessidade de enfileirar as transações

O Oracle começa em segunda marcha por padrão, a leitura foi enviada

Nível de isolamento padrão do Mysql, leitura repetível

1.5 Demo business

A transação Mysql é enviada automaticamente por padrão (o que é envio automático, desde que qualquer instrução DML seja executada, ela será enviada uma vez)

Primeiro, defina o nível de transação de isolamento

1. leia não confirmado (leia não confirmado)

Leia sem compromisso

Abra duas janelas, modifique os dados de uma transação, uma transação pode ser consultada,

Defina o nível de isolamento da transação

definir nível de isolamento de transação global lido não confirmado;

Exibir nível de isolamento do msyql;

selecione @@ global.tx_isolation;

imagem 20200904085613662

Depois de definir o nível de isolamento, saia.

imagem 20200904085632680

2. leia confirmada (leia confirmada)

Pode ler os dados enviados por outras transações (o nível de isolamento padrão da maioria dos bancos de dados)
imagem 20200904085706504

3. leitura repetível (leitura repetível)

Nível de isolamento padrão do Mysql

imagem 20200904085811828

Quando definimos o nível de isolamento da conversa atual para leitura repetível, a conversa atual pode ser lida repetidamente, ou seja, o conjunto de resultados de cada leitura é o mesmo. Na verdade, é feito backup de uma cópia dos dados e ocorre o fenômeno da leitura fantasma.

4. serializável

imagem 20200904085843238

Acho que você gosta

Origin blog.csdn.net/qq_41076577/article/details/108402005
Recomendado
Clasificación