《4.6.2-生产环境改表结构》
pt-online-schema-change:
《4.6.3-insert导致的死锁》
视频里的死锁成因没讲清楚,三个事务都在insert,应该申请X锁,怎么就成了S锁?这里的“五、insert死锁场景分析”解释了:
事务T1成功插入记录,并获得索引id=6上的排他锁。紧接着事务T2、T3也开始插入记录,申请排他锁,但由于唯一索引冲突,各自请求的排他锁转成共享锁。(但是为什么排他锁会转成共享锁?这是什么机制?)
T1回滚释放索引id=6上的排他锁,T2和T3都要请求索引id=6上的排他锁。由于X锁与S锁互斥,T2和T3都等待对方释放S锁。于是,死锁便产生了。
《4.7 数据库性能优化总结与拓展》
硬件资源:
-
60分 打开分析器查看sql语句运行的详细步骤与耗时: set profiling = 1; …
-
各线程查看:show processlist;
查看锁:select * from information_schema.innodb_locks;
查看事务:select * from information_schema.INNODB_TRX; -
126分 阿里开发手册之MySQL数据库:
超多分页亦可见于https://blog.csdn.net/qq_23204557/article/details/111187425#t5
不得使用外键: