当前位置:Gxlcms > 数据库问题 > mysql事务机制

mysql事务机制

时间:2021-07-01 10:21:17 帮助过:18人阅读

  事务是一个完整业务逻辑单元,不可再分。简单来说,事务就是来保证多个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事务机制

标签:mys   sql   提交   ali   回滚   mysql事务   相互   就是   最小   

人气教程排行