1. SQL 语句的执行流程
1.1 逻辑剖析
sql 语句 > 查询缓存 > 解释器 > 优化器 > 执行器
2. 如何在生产环境中为表格增加字段
3.事务
3.1 ACID
- Atomicity,原子操作
- Consistency,一致性
- Isolation,隔离性
- Durability,持久性
解释如下可能会用到 2~3 个事务,这里简称 ABC。
脏写
- A 先将数据从 NULL 更新为 1
- 在 A 未提交时,B 将数据从 1 更新为 2
- A 在执行过程中发生错误并回滚,将数据回滚为 NULL
- B 提交后发现数据并不是 2,并且自己的事务并没有执行失败
B 写失败了
脏读
- A 先将数据从 NULL 更新为 1
- 在 A 未提交时,B 读取数据为 1
- A 在执行过程中发生错误并回滚,将数据回滚为 NULL
- B 再次读取数据发现是 NULL
B 在 step 2 时读取了脏数据
脏写和脏读类似,都是对未提交事务修改的数据进行操作,在该事务发生错误回滚后,就会导致脏写和脏读发生
不可重复读(update)
A 在执行过程中多次读取数据,但在执行过程中,B 和 C 修改并提交了数据,导致 A 多次读取读取到了不同的值幻读(insert,delete)
A 在执行过程中多次查询数据,但在执行过程中,B 和 C 插入并提交新的数据,导致 A 多次查询,查到了不同条数的结果