事务基础与 ACID
事务(Transaction)是数据库保证一组读写作为一个整体生效的机制:要么全部成功提交,要么全部失败回滚,中间状态不对并发读者「半成品可见」(具体可见性由隔离级别决定)。
事务(Transaction)是数据库保证一组读写作为一个整体生效的机制:要么全部成功提交,要么全部失败回滚,中间状态不对并发读者「半成品可见」(具体可见性由隔离级别决定)。
隔离级别定义了并发事务之间,读操作能看到怎样的数据,以及引擎为正确性付出多少锁与版本维护成本。级别越高,异常现象越少,但并发能力与实现复杂度通常更差。
本专题从日常开发最常踩坑的三类能力切入:索引、事务与锁、隔离级别。目标不是罗列 SQL 语法,而是建立可迁移的心智模型——理解存储引擎在做什么,再反推该如何写查询、如何设计表、如何排查慢 SQL 与并发问题。
索引是数据库用额外存储换查找与排序速度的结构。没有索引时,引擎往往只能扫描大量行;有合适索引时,可以快速定位到少量候选行,再读出真正需要的数据。
本节按「你会在建表/改表时真正用到的分类」整理索引类型,并说明适用场景与注意点。仍以 MySQL InnoDB 为主。
锁用来协调并发写以及当前读对数据正确性的要求。InnoDB 以行级锁为主,并配合意向锁、间隙锁等实现范围安全。锁加得越宽、持有越久,并发越差、死锁概率越高。
索引「建了」不等于「用了」。本节整理最左前缀、常见失效模式,以及用 EXPLAIN 验证的方法。