事务及其ACID属性
A:原子性,要么执行,要么不执行。
C:一致性,状态的一致。追求的最终结果。
I:隔离性,不受外部并发操作的影响。
D:持久性,数据修改是永久性的。
并发事务带来的问题
- 更新丢失或者脏写
由于隔离性的影响,会导致最后的更新覆盖了其它事务做的更新 - 脏读
一个事务读到另外一个事务修改未提交的数据 - 不可重读
一个事务相同的查询语句不同时刻读出的结果不一致。不符合隔离性。 - 幻读
一个事务读到了另一个事务提交的新增的数据,不符合隔离性。
事务隔离级别
读未提交
读已提交:解决脏读
可重复读:解决不可重复读(MVCC快照读实现)
可串行化:解决幻读
锁分类
- 性能上分乐观锁与悲观锁。
- 数据库操作类型分为读锁与写锁(都属于悲观锁)。
- 对数据库粒度分为表锁和行锁。(间隙锁与临键锁)
tips:InnoDB与MYISAM最大的不同点
1.InnoDB支持事务。
2.InnoDB支持行级锁。