当系统执行一条SQL 语句访问某个表时,MySQL 首先会尝试去打开表。这个过程会先通过表名从DD Cache 获取表空间(Tablespace)的信息。如果DD Cache 中没有,就会尝试从数据字典表中读取。一般来说DD Cache 和数据字典表中的数据,以及InnoDB 引擎内部的Tablespace 是完全匹配的。在执行数据定义语言(Data Definition Language,DDL)操作时,一般都会触发清理DD Cache 的操作,而这个过程必须要持有整个Tablespace 的元数据定义语言(Metadata Definiton Language,MDL)独占锁才能进行。DDL 操作完成之后,会修改数据字典表中的信息。在用户发起下一次读取时,会将该信息从数据字典表中读取出来并缓存在DD Cache 中。
以上内容摘自《云原生数据库原理与实践》,这本书可以在电子工业出版社天猫店购买。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。