首页 > 代码库 > mysql的事物
mysql的事物
所谓的事物就是一组原子性的SQL语句,或者说是一个独立的工作单元。
1、事物拥有四大特征:
①原子性(atomicity):一个事物必须被分为一个不可分割的的最小单元,整个事物中的所有操作要么全部提交,要么全部回滚,这就是事物的原子性。
②一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。即数据库事物不能破坏数据的完整性和一致性。
③隔离性(isolation):指的是在并发环境中,多个事物处理相同的数据,每个事物都有各自的完整数据空间。
④持久性(durability):一旦事物提交,则其所做的修改就会永久保存到数据库中。
事物的原子性、一致性、持久性三个特征是通过事物日志来维持的,事物日志记录了对事物的每次的更新,如果因为某些原因事物出现错误,则可以通过撤销事物对数据库 的更改,是事物回滚到数据库执行事物之前的初始状态。
事物的隔离性是通过锁机构来实现的,拥有各自的独立空间。
2、事物的隔离级别:
SQL标准定义了四种隔离级别:
无提交读(Read Uncommitted):在Read Uncommitted级别中,事物的修改,即使没有提交,对其他事物也是可见的。事物可以读取未提交的数据,这也被称为脏读(Dirty Read).
提交读(Read Committed):一个事物从开始知道事物提交之前,所做的任何修改对其他事物都是不可见的,这也叫不可重复读(nonrepeatable),执行两次相同的查询,得到不同的结果。
可重复读(Repeatable Read):该级别保证了同一个事物中多次读取同样的结果是一致的。可能会导致幻读。
可串行化(Serializable):最高的隔离级别。通过强制事物串行执行,避免了前面说的幻读的问题。
mysql的事物