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