MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)

文章目录

  • [MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)](#MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary))
    • [File-based Metadata Storage (基于文件的元数据存储)](#File-based Metadata Storage (基于文件的元数据存储))
    • [Transactional Data Dictionary (事务数据字典)](#Transactional Data Dictionary (事务数据字典))
    • [Serialized Dictionary Information (SDI) :数据字典的序列化(持久化存储)](#Serialized Dictionary Information (SDI) :数据字典的序列化(持久化存储))
    • [Dictionary Object Cache(数据字典对象缓存)](#Dictionary Object Cache(数据字典对象缓存))
    • 例题
    • 参考

【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。
编辑|SQL和数据库技术(ID:SQLplusDB)

MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点5:数据字典(Data Dictionary)

元数据 是数据库中描述数据的数据,包括各种数据库对象的定义,例如:

  • 表和列的定义
  • 索引和约束的定义
  • 用户和权限的定义
    ...

而数据字典就是存储元数据的地方。

File-based Metadata Storage (基于文件的元数据存储)

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)生成的元数据操作记录。

Transactional Data Dictionary (事务数据字典)

从MySQL 8.0开始,数据字典信息集中存放在InnoDB的数据字典表中。

  • 数据字典表归属于mysql database
  • 存放在一个单一的InnoDB表空间中,即在MySQL数据目录中名为mysql.ibd的文件
  • INFORMATION_SCHEMA的一些表和 SHOW 语句作为访问数据字典的接口

Serialized Dictionary Information (SDI) :数据字典的序列化(持久化存储)

MySQL 8.0开始对数据字典的存储进行了修改,即将存储在.frm、.par、.TRN等系统文件中的数据字典信息存储到InnoDB的字典表中。

同时,除了在数据字典中存储元数据外,MySQL还以序列化(SDI)的形式存储它。

Serialized Dictionary Information (SDI)是MySQL中存储关于数据库对象的元数据(数据字典)的一种形式,用于提供元数据的冗余性。

SDI数据通过对表进行DDL操作或CHECK TABLE FOR UPGRADE进行更新,并且以JSON格式存储。

对于SDI信息的存储,会根据存储引擎的不同有所不同:

  • InnoDB将SDI数据与数据一起存储在其表空间文件中。
    -除了临时表空间和撤销表空间文件外,SDI存在于所有InnoDB表空间文件中。
    -InnoDB表空间文件中的SDI记录仅描述表和表空间对象。
  • NDBCLUSTER将SDI数据存储在NDB字典中。
  • 其他存储引擎(如MyISAM等)将SDI数据存储在数据库目录中的.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

Dictionary Object Cache(数据字典对象缓存)

数据字典对象缓存是一个共享的全局缓存,将先前访问过的数据字典对象存储在内存中,以实现对象的重用并最小化磁盘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

例题

clike 复制代码
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

相关推荐
shelby_loo3 小时前
通过 Docker 部署 MySQL 服务器
服务器·mysql·docker
sleP4o8 小时前
Python操作MySQL
开发语言·python·mysql
canonical_entropy9 小时前
金蝶云苍穹的Extension与Nop平台的Delta的区别
后端·低代码·架构
大熊程序猿9 小时前
python 读取excel数据存储到mysql
数据库·python·mysql
知识分享小能手9 小时前
mysql学习教程,从入门到精通,SQL DISTINCT 子句 (16)
大数据·开发语言·sql·学习·mysql·数据分析·数据库开发
lamb张9 小时前
MySQL锁
数据库·mysql
沛沛老爹10 小时前
服务监控插件全览:提升微服务可观测性的利器
微服务·云原生·架构·datadog·influx·graphite
躺平的花卷11 小时前
Python爬虫案例六:抓取某个地区某月份天气数据并保存到mysql数据库中
数据库·爬虫·python·mysql
huaqianzkh11 小时前
了解华为云容器引擎(Cloud Container Engine)
云原生·架构·华为云
Kika写代码11 小时前
【基于轻量型架构的WEB开发】【章节作业】
前端·oracle·架构