Transação Mysql [resumo]

Transação: a menor unidade de trabalho para executar instruções SQL no banco de dados, garantindo que várias instruções SQL na transação sejam todas bem-sucedidas ou todas falhem;

Um negócio completo requer um lote de instruções DML (inserir, atualizar, excluir) para ser concluído em conjunto.As transações estão relacionadas apenas a instruções DML, ou as instruções DML têm transações.

1. Quatro características dos negócios (ACID):

  1. Atomicidade: Atomicidade, inseparabilidade mínima, garantia de todos os sucessos ou todas as falhas;
  2. Consistência: Consistência, de um estado consistente para outro estado consistente (quando todas as instruções DML são necessárias para operar, elas devem ter garantia de sucesso ou falha ao mesmo tempo);
  3. Isolamento: isolamento, várias transações são isoladas umas das outras sem afetar umas às outras;
  4. Durabilidade: Durabilidade, depois que a transação é confirmada, os dados são persistidos.

2. Use os termos da transação:

  • Abra a transação:Start Transaction;
  • Fim da transação:End Transaction;
  • Confirme a transação:Commit Transaction;
  • Reverter a transação: Rollback Transaction;

3. Instruções relacionadas a assuntos:

  • Verifique o status de envio automático:show variables like '%autocommit%';
  • Envio automático de modificação:set autocommit = 0/1;
  • enviar:commit;
  • Rollback:rollback;
  • Salvar ponto de reversão:savepoint s1;
  • Reverter para o ponto de reversão especificado:rollback to s1;

4. O sinal de início e término da transação:

  • Sinalizador de abertura: qualquer instrução DML (inserir, atualizar, excluir) é executada para marcar a abertura da transação;
  • Sinal de fim:
    • Enviar: Finalização bem-sucedida: sincroniza todos os registros do histórico de operação da instrução DML e os dados do disco rígido subjacente de uma vez;
    • Rollback: o fim da falha: limpar todos os registros de histórico de todas as operações de instrução DML.

5. Dados de nível inferior da transação e do banco de dados: Durante o processo de transação, as instruções DML não alteram os dados de nível inferior antes de terminar, mas apenas registram as operações históricas e concluem a gravação na memória. Somente no final da transação, e quando ela terminar com êxito, os dados no arquivo do disco rígido subjacente serão modificados.

6. No Mysql, confirmação e reversão da transação:

  • No Mysql, por padrão, a transação é confirmada automaticamente, ou seja, enquanto uma instrução DML é executada, a transação é aberta e a transação é confirmada.
  • Depois de usar a set autocommit = 0;transação fechada acima , você pode usar commit;e rollback;para confirmar e reverter manualmente.

7. Uma das quatro principais características das transações: link de referência de isolamento (isolamento)

Há um certo grau de isolamento entre a transação A e a transação B, e o isolamento tem um nível de isolamento: (4)

  1. Leia não comprometido: leia não comprometido
  2. Leia confirmada: leia confirmada
  3. Leitura repetível: leitura repetível
  4. Serialização: serializável

1) leia não comprometido

- 事物A和事物B,事物A未提交的数据,事物B可以读取到
- 这里读取到的数据叫做“脏数据”
- 这种隔离级别最低,这种级别一般是在理论上存在,数据库隔离级别一般都高于该级别

2) leia comprometido

- 事物A和事物B,事物A提交的数据,事物B才能读取到
- 这种隔离级别高于读未提交
- 换句话说,对方事物提交之后的数据,我当前事物才能读取到
- 这种级别可以避免“脏数据”
- 这种隔离级别会导致“不可重复读取”
- Oracle默认隔离级别

3) leitura repetível

- 事务A和事务B,事务A提交之后的数据,事务B读取不到
- 事务B是可重复读取数据
- 这种隔离级别高于读已提交
- 换句话说,对方提交之后的数据,我还是读取不到
- 这种隔离级别可以避免“不可重复读取”,达到可重复读取
- 比如1点和2点读到数据是同一个
- MySQL默认级别
- 虽然可以达到可重复读取,但是会导致“幻像读”

4) serializável

- 事务A和事务B,事务A在操作数据库时,事务B只能排队等待
- 这种隔离级别很少使用,吞吐量太低,用户体验差
- 这种级别可以避免“幻像读”,每一次读取的都是数据库中真实存在数据,事务A与事务B串行,而不并发

8. A relação entre nível de isolamento e consistência:
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/weixin_44296929/article/details/108667640
Recomendado
Clasificación