mysql事务机制

Posted limaomao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql事务机制相关的知识,希望对你有一定的参考价值。

什么是事务

  事务是一个完整业务逻辑单元,不可再分。简单来说,事务就是来保证多个SQL语句原子化执行的的机制,mysql中并不是所有的存储引擎都支持事务,单数默认的innodb存储引擎是支持事务的。

事务的特性(ACID)

  原子性Atomic:事务是最小的业务逻辑单元,不可再分割

  一致性Consistency:事务必须保证多条dml语句同时成功或失败

  隔离性Isolation:不同的事务之间相互隔离,互不影响

  持久性Durability:事务提交之后数据会持久到硬盘文件中

事务的隔离级别

  1、第一级别:读未提交,read uncommitted,这隔离级别特别低,当前事务中可以读取到别的事务中未commit的数据,read uncommitted存在脏读现象,存在脏数据44

  2、第二级别:读以提交,read committed(Oracle默认),当前事务可以读取其他事务中已经提交的数据。这个隔离级别虽然解决了脏读问题,但是会会造成不可重复度,意思是当前事务未结束时,可能其他事务中已经多次进行commit,所以在当前未结束的事务中可能在重复读取时每一次读到的数据都不一致(因此成为不可重复度)。

  3、第三级别:可重复度,repeatable read(MySQL默认),这种隔离级别解决了不可重复度问题,但是存在幻读问题,即读取到的数据是一个幻像

  4、第四级别:串行化读,serializable,此隔离级别解决了所有问题,存在效率低,需要事务排队

MySQL的事务

  首先mysql的事务是自动提交的,只要执行一条DML就会自动提交一次。

  开启事务,begin或者start transaction

  提交事务,commit

  回滚事务,rollback

  查看全局事务的隔离级别,SELECT @@global.tx_isolation;

  设置mysql事务的隔离级别,set global transaction isolation level 隔离级别 

  

以上是关于mysql事务机制的主要内容,如果未能解决你的问题,请参考以下文章

MySQL事务隔离机制 -- 必须说透

MySQL事务篇:ACID原则事务隔离级别及事务机制原理剖析

细品mysql的事务隔离机制

MySQL-事务机制

MySQL 中的事务控制机制

Mysql 锁机制和事务