数据库挂了、server挂了、网不通了,多个client同时修改...出现这些问题都会影响整个系统,为例保证数据库的可靠性,所以就出现了事务
从概念上讲,事务中的所有读写操作被视作单个操作来执行:整个事务要么成功提交,要么失败 中止或回滚,这样如果操作过程中出现了什么问题还可以回滚,让client重试
事务所提供的安全保证,通常由众所周知的首字母缩略词 ACID 来描述,ACID 代表 原子性(Atomicity),一致性(Consistency),隔离性(Isolation) 和 持久性(Durability)
针对多个client同时操作数据库的情况又会出现很多的问题:(隔离性)
- 脏读
- 不可重复读
- 幻读
- 更新丢失
为了避免上述事务并发问题的出现,在标准的 SQL 规范中定义了四种事务隔离级别,不同的隔离级别对事务的处理有所不同。读未提交、读已提交、可重复读、串行化
没有mvcc怎么实现:https://juejin.cn/post/6844904096378404872