因为数据库操作也是并发操作,多个客户端在操作的时候,可能会存在很多问题
1. 一些问题
● 脏写(人家还没有提交,我可以改别人的数据),这个在数据库不存在,已经通过锁解决了
● 脏读(人家还没有提交,我可以查到别人的数据)
● 不可重复读(我在查询的过程中,别人修改的数据我可以看得到)
● 幻读(我在查询的过程中,数据多了或者少了)
2. 隔离级别
● 读未提交
● 读已提交
● 可重复读 (Mysql默认设置 RR),mysql通过mvcc避免了一部分幻读,最终是用锁来解决幻读的
● 串行化
3. 事务特性以及实现原理
● 原子性:undo log,要么成功,要么失败回滚
● 一致性:其他几个保证了一致性
● 隔离性:mvcc可以完成读写之间隔离,写写隔离需要通过锁
● 持久性:redo log + binlog 二阶段提交