上一篇介绍了MySQL源码中保护内存结构或变量的锁,这里开始介绍下MySQL事务中的表锁。
注1: 在表锁的实现上面,使用【mutex+condition+queue】的结构实现并发,阻塞,唤醒的表锁功能。
注2: 本文进行的一些实验,重要的配置项:
1. autocommit=02. tx_isolation=read-commited
3. engine=innodb
1. MySQL加锁的顺序:
这里包括了一个sql在执行的过程中,包括commit,所添加和释放跟事务相关的锁以及加不同锁的加锁顺序,这一篇先重点介绍一下MySQL的表锁。
2. MySQL的表锁
注:通过测试看到,MySQL的表锁,是落入innodb层的代码中实现的。
2.1 重要的数据结构
struct st_thr_lock_info
struct st_thr_lock_data
struct st_thr_lock
通过这三个主要的struct,来实现表锁,这三者之间的关系是:
<