数据库事务
工作以来一直使用MySQL InnoDB引擎,业务代码中往往需要使用事务,事务有以下几个特性, A(原子性),C(一致性),I(隔离性),D(持久性)
原子性
一个事务被视为最小执行单元,要么全部执行,要不全不执行
一致性
数据库总是从一个一致性的状态转移到另外一个一致性的状态
隔离性
一个事务所做的修改在commit之前,对其他事务来说是不可见的
持久性
一个事务commit之后,就持久的保存在系统中,无论系统错误或者系统重启,数据也不会丢失
事务的隔离级别
在数据库操作中,为了保证在并发读取数据的正确性,提出了事务的隔离级别。
隔离级别 |
脏读 |
不可重复读 |
幻读 |
未提交读(read uncommited) |
可能 |
可能 |
可能 |
已提交读 ( read commited) |
不可能 |
可能 |
可能 |
可重复读 (read repeatable) |
不可能 |
不可能 |
可能 |
串行读 (read serializable) |
不可能 |
不可能 |
不可能 |