当前位置: 首页 > news >正文

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

文章目录

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

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

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

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

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

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

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

MySQL 8.0之前的版本,数据字典中的元数据是存放在不同的元数据文件中。

File TypeDescription
.frm files表的元数据文件。
.par files分区定义文件。
随着InnoDB表的本地分区支持的引入,在MySQL 5.7中InnoDB停止使用分区定义文件。
.TRN files触发器命名空间文件。
.TRG files触发器参数文件。
.isl filesInnoDB符号链接文件,包含在数据目录之外创建的文件表空间文件的位置。
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 PartitionDescriptionVariableDefault value
tablespace definition cache partitionStores tablespace definition objectstablespace_definition_cache256
schema definition cache partitionStores schema definition objectsschema_definition_cache256
table definition cache partitionStores table definition objectsmax_connections151
stored program definition cache partitionStores stored program definition objectsstored_program_definition_cache256
character set definition cache partitionStores character set definition objects-hardcoded object limit of 256
collation definition cache partitionStores 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 TABLEAnswer: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

http://www.lryc.cn/news/168303.html

相关文章:

  • 7分钟了解ChatGPT是如何运作的
  • 蓝桥杯打卡Day8
  • React 学习笔记目录
  • 一起Talk Android吧(第五百五十一回:如何自定义SplashScreen)
  • PYTHON-模拟练习题目集合
  • UE5学习笔记(1)——从源码开始编译安装UE5
  • DP读书:《openEuler操作系统》(二)操作系统的发展史
  • SQL sever中相关查询
  • Java手写IO流和案例拓展
  • Linux入门教程||Linux 文件与目录管理
  • MyBatis获取参数值的两种方式#{}和${} 以及 获取参数值的各种情况
  • (手撕)数据结构--->堆
  • [运维|数据库] MySQL 中的COLLATE在 PostgreSQL如何表示
  • 【Linux】tar 与 zip 命令
  • VS2015+opencv 3.4.6开发环境
  • [运维|数据库] 将mysql的null.unix_timestamp(now()) * 1000转为PostgreSQL的语法
  • springboot使用filter增加全局traceId,方便日志查找
  • 面经学习三
  • Open3D 点云配准——可视化匹配点对之间的连线
  • io多路复用之poll的详细执行过程
  • 网络安全深入学习第四课——热门框架漏洞(RCE— Log4j2远程代码执行)
  • 大数据Flink(八十一):SQL 时区问题
  • Input子系统 - Kernel驱动程序 - Android
  • MySQL里的查看操作
  • Vim的基础操作
  • 十天学完基础数据结构-第一天(绪论)
  • 神经网络 03(参数初始化)
  • div设置圆角#前端
  • Windows开机密码破解
  • Mobirise for Mac:轻松创建手机网站的手机网站建设软件