MySQL在内存中维护了多个锁表,其中包括全局锁表和每个存储引擎的锁表。全局锁表存储了所有表级锁的信息,而存储引擎的锁表存储了行级锁和页级锁的信息。
全局锁表的具体位置是在MySQL服务器内存中。MySQL在启动时会分配一部分内存用于存储锁表,全局锁表位于这部分内存中的一个数据结构中。这个数据结构中包含了锁表的头指针、锁表的尾指针以及锁表的锁记录,每个锁记录包含了锁类型、锁状态、锁持有者、等待者等信息。
存储引擎的锁表的具体位置则取决于具体的存储引擎实现,不同存储引擎可能会采用不同的方式来维护锁表。例如,InnoDB存储引擎的锁表是在缓冲池中的数据页中维护的,而MyISAM存储引擎的锁表则是在表的元数据中维护的。不同存储引擎的锁表实现方式不同,但都必须遵循MySQL定义的锁协议来保证数据的一致性和安全性。