mysql的事物

  所谓的事物就是一组原子性的SQL语句,或者说是一个独立的工作单元。

  1、事物拥有四大特征:

 

    ①原子性(atomicity):一个事物必须被分为一个不可分割的的最小单元,整个事物中的所有操作要么全部提交,要么全部回滚,这就是事物的原子性。

 

    ②一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。即数据库事物不能破坏数据的完整性和一致性。

 

    ③隔离性(isolation):指的是在并发环境中,多个事物处理相同的数据,每个事物都有各自的完整数据空间。

 

    ④持久性(durability):一旦事物提交,则其所做的修改就会永久保存到数据库中。

 

    事物的原子性、一致性、持久性三个特征是通过事物日志来维持的,事物日志记录了对事物的每次的更新,如果因为某些原因事物出现错误,则可以通过撤销事物对数据库  的更改,是事物回滚到数据库执行事物之前的初始状态。

 

   事物的隔离性是通过锁机构来实现的,拥有各自的独立空间。

 

  2、事物的隔离级别

 

    SQL标准定义了四种隔离级别:

 

    无提交读(Read Uncommitted:Read Uncommitted级别中,事物的修改,即使没有提交,对其他事物也是可见的。事物可以读取未提交的数据,这也被称为脏读(Dirty Read.

 

    提交读(Read Committed:一个事物从开始知道事物提交之前,所做的任何修改对其他事物都是不可见的,这也叫不可重复读(nonrepeatable,执行两次相同的查询,得到不同的结果。

 

    可重复读(Repeatable Read:该级别保证了同一个事物中多次读取同样的结果是一致的。可能会导致幻读。

 

    可串行化(Serializable:最高的隔离级别。通过强制事物串行执行,避免了前面说的幻读的问题。

 

原文地址:https://www.cnblogs.com/wenxianguo/p/4004812.html