这门课在解决什么具体问题
初学者最容易踩的坑,是用平时代码课的方式去理解数据库,以为把 SQL 写出来就完事了。一旦遇到两个请求同时改一行数据,或者测试环境跑得好好的功能到了线上就出现“明明减了钱但余额没变”的怪事,问题往往就出在事务控制上。这门课围绕 MySQL 的事务和锁展开,目的是把“原子性、隔离性、一致性、持久性”这些抽象词落到实处,让你看懂为什么需要隔离级别、为什么会有脏读和不可重复读,以及 InnoDB 和 MyISAM 在并发控制上的根本差异。课程的讨论范围限定在 MySQL 自带的 InnoDB 引擎上,不涉及分布式事务或多数据库中间件的内容。
门槛与建议的学习顺序
这门课的隐性门槛是:你必须已经能熟练写出 SELECT、INSERT、UPDATE 三类语句,并且理解什么是“主键”和“数据表”。如果连简单的联表查询都没写过,直接看锁机制会非常吃力。建议的观看顺序是先把前四讲吃透,弄清“事务”和“自动提交”的关系,并明确“隐式事务”和“显式事务”的区别,这是一切后续内容的起点。然后花时间重点看隔离级别相关的几讲,必须弄清楚“Read Uncommitted”到“Serializable”之间的递进关系,理解每提高一级会牺牲什么性能、避免什么异常。接着进入锁的部分,先建立“锁的粒度”这个大概念,再分别看表级读锁、行级锁的差异。死锁和存储过程中的事务回滚作为收尾即可,不必一开始就钻。
对于基础薄弱或者时间零碎的自学者来说,第 13 到 15 讲中关于特定参数验证的内容可以跳过,那些细节对入门阶段帮助不大,等以后真要排查线上问题再回来翻也不迟。整门课的节奏并不慢,但前四讲如果没看明白,后面会越看越糊涂,所以宁可慢一点也不要图快跳过。
学完能独立做什么、资料怎么用
当你看完这门课、做完练习,应当能够独立完成这些事:在命令行下手动开启和关闭一个事务;根据业务场景选择合适的隔离级别,并在配置文件里做永久设置;在存储过程中编写转账逻辑,根据自定义条件决定提交还是回滚;看懂死锁日志,理解 MySQL 自动回滚的策略。
关于练习方法,最有效的是开两个数据库连接窗口同时操作:一个窗口开事务但不提交,另一个窗口尝试修改或读取,直观感受锁等待和隔离级别的差异。资料包中提供的脚本可以作为验证用例,但不要直接复制粘贴运行了事,必须自己改条件、故意制造错误去触发回滚,把每一类异常和对应的隔离级别一一对应起来。把这门课放在整个 MySQL 学习路径中看,它属于“懂原理”的阶段,前承基础 SQL,后接索引优化和主从架构,慢一点看完是值得的。
课程目录
1 01. 本章课程介绍 事物概念 事物特性 ACID (12:56) 2 02. 事务类型 自动提交事务_默认 隐式事务_启动事务提交 (12:42) 3 03. 事务类型 显式事务 START_TRANSACTIO (09:36) 4 04. 事物并发带来问题 脏读 不可重复读 幻象读 丢失更新 (15:26) 5 05. 事务隔离级别 Read Uncommitted(读取 (12:41) 6 06. 事务隔离级别 读取提交内容 Read Committ (05:37) 7 07. 事务隔离级别 可重读 Repeatable Read (07:38) 8 08. 事务隔离级别 可串行化 Serializable - (07:02) 9 09. 设置当前会话或全局事务隔离级别 临时或永久设置 (10:29) 10 10. 锁的粒度 (08:42) 11 11. 添加表级“读锁”,限制其它用户修改 (10:56) 12 12. 只锁定当前或现有的记录 则其它用户可以支持添加记录 (07:23) 13 13. 验证参数1:有空洞不允许插入到表尾(AUTO) (08:41) 14 14. 验证参数0:不允许并发操作(NEVER) (04:30) 15 15. 验证参数2:始终允许插入到表尾,与空洞无关(ALWA (06:59) 16 16. MyISAM 添加表级,写锁(独占锁) (04:26) 17 17. InnoDB 存储引擎 并发控制协议 快照读 当前读 (11:45) 18 18. InnoDB “行”级锁 没有主键表级锁 创建主键“ (14:04) 19 19. 死锁的产生和 MySQL 自动处理方式 (05:48) 20 20. 在存储过程中使用事务 有错误则回滚 ROLLBACK (09:40) 21 21. 使用自定义条件决定事务提交还是回滚(模拟银行转账过程 (08:03)





