赞
踩
元数据 是数据库中描述数据的数据,包括各种数据库对象的定义,例如:
而数据字典就是存储元数据的地方。
MySQL 8.0之前的版本,数据字典中的元数据是存放在不同的元数据文件中。
File Type | Description |
---|---|
.frm files | 表的元数据文件。 |
.par files | 分区定义文件。 |
随着InnoDB表的本地分区支持的引入,在MySQL 5.7中InnoDB停止使用分区定义文件。 | |
.TRN files | 触发器命名空间文件。 |
.TRG files | 触发器参数文件。 |
.isl files | InnoDB符号链接文件,包含在数据目录之外创建的文件表空间文件的位置。 |
db.opt files | 数据库配置文件。 |
每个数据库目录有一个这样文件,包含数据库默认字符集属性。 | |
ddl_log.log file | 元数据操作记录文件。 |
该文件包含由数据定义语句(如DROP TABLE和ALTER TABLE)生成的元数据操作记录。 |
从MySQL 8.0开始,数据字典信息集中存放在InnoDB的数据字典表中。
MySQL 8.0开始对数据字典的存储进行了修改,即将存储在.frm、.par、.TRN等系统文件中的数据字典信息存储到InnoDB的字典表中。
同时,除了在数据字典中存储元数据外,MySQL还以序列化(SDI)的形式存储它。
Serialized Dictionary Information (SDI)是MySQL中存储关于数据库对象的元数据(数据字典)的一种形式,用于提供元数据的冗余性。
SDI数据通过对表进行DDL操作或CHECK TABLE FOR UPGRADE进行更新,并且以JSON格式存储。
对于SDI信息的存储,会根据存储引擎的不同有所不同:
参考:
https://dev.mysql.com/doc/refman/8.0/en/serialized-dictionary-information.html
对于SDI信息,可以通过MySQL提供的ibd2sdi工具进行查看和转储。
关于ibd2sdi工具可以参考如下文章:
【MySQL】ibd2sdi工具介绍和使用
https://teacherwhat.blog.csdn.net/article/details/132917728
数据字典对象缓存是一个共享的全局缓存,将先前访问过的数据字典对象存储在内存中,以实现对象的重用并最小化磁盘I/O。
与MySQL使用的其他缓存机制类似,数据字典对象缓存使用基于LRU的驱逐策略,从内存中驱逐最近未使用的对象。
数据字典对象缓存由存储不同对象类型的缓存分区组成。
某些缓存分区的大小限制是可配置的,而其他分区的大小是硬编码的。
Cache Partition | Description | Variable | Default value |
---|---|---|---|
tablespace definition cache partition | Stores tablespace definition objects | tablespace_definition_cache | 256 |
schema definition cache partition | Stores schema definition objects | schema_definition_cache | 256 |
table definition cache partition | Stores table definition objects | max_connections | 151 |
stored program definition cache partition | Stores stored program definition objects | stored_program_definition_cache | 256 |
character set definition cache partition | Stores character set definition objects | - | hardcoded object limit of 256 |
collation definition cache partition | Stores collation definition objects | - | hardcoded object limit of 256 |
参考:
https://dev.mysql.com/doc/refman/8.0/en/data-dictionary-object-cache.html
Choose three.
Which three methods display the complete table definition of an InnoDB table?
A) hexdump -v -C table.frm
B) REPAIR TABLE table USE_FRM
C) mysqldump --no-data schema table
D) Query the Information Schema.
E) SELECT * FROM table 1\G
F) SHOW CREATE TABLE
Answer:CDF
Chapter 14 MySQL Data Dictionary
https://dev.mysql.com/doc/refman/8.0/en/data-dictionary.html
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-0.html#mysqld-8-0-0-data-dictionary
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-12.html#mysqld-8-0-12-data-dictionary
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。