首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL 8.0 数据字典

本文我们就来聊聊 MySQL 8.0 数据字典表。 本文内容基于 MySQL 8.0.29 源码。 目录 1. 概述 2. 数据字典表有哪些? 3. 数据字典表元数据在哪里? 4....数据字典表本身也大变样了: 数据字典表不再位于 InnoDB 系统表空间,而是迁移到 mysqlmysql 库位于 mysql 表空间,磁盘文件为 mysql.ibd。...除了数据字典表,m_registry 还包含了 mysql的其它 MySQL 系统表。...打开数据字典数据字典表保存着 MySQL 运行过程需要的一系列关键数据,使用频次很高,MySQL 启动过程中就会把数据字典表的元数据都加载到内存,这就是打开表的过程。...也就是说,打开数据字典表是在 MySQL 启动过程完成的。 前面我们介绍过,数据字典表的元数据也是保存在数据字典的。

1.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL8.0之数据字典

    |  简介 MySQL 8.0 将数据库元信息都存放于InnoDB存储引擎表,在之前版本的MySQL数据字典不仅仅存放于特定的存储引擎表,还存放于元数据文件、非事务性存储引擎表。...本文将会介绍MySQL 8.0对数据字典的改进,以及改进带来的好处、影响以及局限性。 |  数据字典 (1)新版本之前的数据字典 数据字典数据库重要的组成部分之一,那么什么是数据字典?...在MySQL数据字典信息内容就包括表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等内容。...在MySQL8.0之前,MySQL数据字典信息,并没有全部存放在系统数据库表,部分数据数据字典信息存放于文件,其余的数据字典信息存放于数据字典(INFORMATION_SCHEMA,mysql...和mysqlpump可以导出mysql系统库的所有表的内容,8.0之后,只能导出mysql系统库没有数据数据字典表。

    3.2K90

    详解MySQL-8.0数据字典

    引言 ---- 数据字典(Data Dictionary)存储了诸多数据库的元数据信息如图1所示,包括基本Database, table, index, column, function, trigger...MySQL-8.0在数据字典上进行了诸多优化,本文将对其进行逐一介绍。 ? 图1 2. MySQL-8.0之前的数据字典 俗话说知己知彼,方能百战不殆。...在介绍MySQL-8.0的数据字典前,我们先一起回顾一下MySQL-8.0之前的数据字典。 2.1 Data Dictionary 分布位置 ?...MySQL-8.0的数据字典 鉴于旧数据字典的种种缺点,MySQL-8.0对数据字典进行了较大的改动:把所有的元数据信息都存储在InnoDB dictionary table,并且存储在单独的表空间...Serialized Dictionary Information (SDI) MySQL8.0不仅将元数据信息存储在数据字典,同时也冗余存储了一份在SDI

    6.4K53

    MySQL 8.0新特性: 数据字典

    二、MySQL8.0 数据字典 MySQL Server包含一个事务性数据字典,该字典存储有关数据库对象的信息。...在以前的MySQL版本字典数据存储在元数据文件,非事务表和存储引擎特定的数据字典。...(SDI) MySQL8.0不仅将元数据信息存储在数据字典,同时也冗余存储了一份在SDI。...性能提升 数据库在查询INFORMATION_SCHEMA的表时,不再一定需要创建一张临时表,可以直接查询数据字典表 在之前版本数据字典信息不一定是存放于表,所以在获取数据字典信息时候,不仅仅是查表操作...这在之前版本的DDL操作是不支持的。之前数据库版本中一直没有支持原子DDL的特性,是有原因的,因为在早期的数据库版本数据库元信息存放于元信息文件、非事务性表以及特定存储引擎的数据字典

    2.2K30

    MySQL8.0之数据字典

    ---- MySQL 8.0 将数据库元信息都存放于InnoDB存储引擎表,在之前版本的MySQL数据字典不仅仅存放于特定的存储引擎表,还存放于元数据文件、非事务性存储引擎表。...在MySQL数据字典信息内容就包括表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等内容。...该库中保存的信息也可以称为MySQL数据字典。...在MySQL8.0之前,MySQL数据字典信息,并没有全部存放在系统数据库表,部分数据数据字典信息存放于文件,其余的数据字典信息存放于数据字典(INFORMATION_SCHEMA,mysql...和mysqlpump可以导出mysql系统库的所有表的内容,8.0之后,只能导出mysql系统库没有数据数据字典表。

    1.4K10

    MySQL 8.0数据字典有什么变化

    MySQL 8.0数据字典有什么变化 从MySQL 8.0开始,采用独立表空间模式的每个InnoDB表只有一个 .ibd 表空间文件,而不再有 .frm 文件了。...为了实现DDL的原子性,InnoDB直接把元数据存储在表空间文件,需要的话,可是使用 ibd2sdi 工具从中读取,例如: $ ibd2sdi test/t1.sdi ["ibd2sdi" , {...在 .sdi 文件,采用JSON格式存储元数据信息。 对于MyISAM表,不能再像以前那样,直接把 .frm\.MYD\.MYI 文件拷贝到目标数据库后就能直接用。...方法改成了类似下面这样的: # 首先拷贝数据及索引文件到目标数据库 $ cp -p ./db1/t1.MYD ./db1/t1.MYI ..../db1/t1_1274.sdi $secure_file_priv/ # 修改 .sdi 文件的 schema 值,将 db1 改成 db2 # MySQL文档没提到这点,但实测过程中发现需要加这步操作

    18421

    MySQL-8.0 | 数据字典最强解读

    引言 ---- 数据字典(Data Dictionary)存储了诸多数据库的元数据信息如图1所示,包括基本Database, table, index, column, function, trigger...MySQL-8.0在数据字典上进行了诸多优化,本文将对其进行逐一介绍。 ? 图1 2. MySQL-8.0之前的数据字典 ---- 俗话说知己知彼,方能百战不殆。...在介绍MySQL-8.0的数据字典前,我们先一起回顾一下MySQL-8.0之前的数据字典。 2.1 Data Dictionary 分布位置 ?...MySQL-8.0的数据字典 ---- 鉴于旧数据字典的种种缺点,MySQL-8.0对数据字典进行了较大的改动:把所有的元数据信息都存储在InnoDB dictionary table,并且存储在单独的表空间...Serialized Dictionary Information (SDI) ---- MySQL8.0不仅将元数据信息存储在数据字典,同时也冗余存储了一份在SDI

    3.8K20

    MySQL 8.0 数据字典有哪些变化?

    墨墨导读:MySQL8.0 数据字典(Data Dictionary)也在进化。MyISAM系统表全部换成InnoDB表 ,支持原子DDL。复杂度增加了。...1 数据字典 MySQL数据字典数据库重要的组成部分之一,包含表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等对象的基础信息。...对mysql,sys系统库的存储引擎做了改进,原使用MyISAM存储引擎的数据字典表都改为使用InnoDB存储引擎存放。...为了支持DDL操作的重做和回滚,InnoDB将DDL日志写到mysql.innodb_ddl_log表,它是一个隐藏的数据字典表,驻留在mysql。ibd数据字典表空间。...3.提交:更新数据字典并提交数据字典事务。 4.Post-DDL:重播并从mysql.innodb_ddl_log表格删除DDL日志。

    2.1K20

    MySQL 8.0数据字典有什么变化

    MySQL 8.0数据字典有什么变化 从MySQL 8.0开始,采用独立表空间模式的每个InnoDB表只有一个 .ibd 表空间文件,而不再有 .frm 文件了。...为了实现DDL的原子性,InnoDB直接把元数据存储在表空间文件,需要的话,可是使用 ibd2sdi 工具从中读取,例如: $ ibd2sdi test/t1.sdi ["ibd2sdi" , {...在 .sdi 文件,采用JSON格式存储元数据信息。 对于MyISAM表,不能再像以前那样,直接把 .frm\.MYD\.MYI 文件拷贝到目标数据库后就能直接用。...方法改成了类似下面这样的: # 首先拷贝数据及索引文件到目标数据库 $ cp -p ./db1/t1.MYD ./db1/t1.MYI ..../db1/t1_1274.sdi $secure_file_priv/ # 修改 .sdi 文件的 schema 值,将 db1 改成 db2 # MySQL文档没提到这点,但实测过程中发现需要加这步操作

    90020

    MySQL8功能详解——数据字典

    随着时间的推移,这些文件逐渐成为了各种环境的瓶颈。MySQL8推出了支持事务的数据字典。...现在将这些元数据文件存储在数据字典。...事务、崩溃安全的数据字典数据字典保存在具有完整事务功能的InnoDB表,并保存在mysql系统数据库下面。...数据字典升级: 新版本的MySQL可能包含更改的数据字典表定义,当MySQL执行原地升级时,这些更改在服务器重启时执行。...在服务器启动时,服务器会对数据字典的当前版本与存储在数据字典里的信息进行比较,以决定是否升级。如果需要并支持升级,服务器将创建一个新的数据字典表,并将元数据复制到新表,自动替换旧的数据字典表。

    1K30

    业务字典表的MySQL实现方案

    为什么需要字典表? 某些变量在多个地方使用,而且一般固定,但随系统升级和后期变化,可能需要改变,如果这些变量写死在代码里面将会变得难以维护,所以要将其从代码抽离。...所以通常把字典放在数据库,维护变更就简单了,达到在不修改代码情况下也能修改配置。对于某些固定的数据字典(例如,星期,月份等)还就不允许修改。...但放在数据库又会造成频繁访问数据库,这也不是我们期望的,通常就是加缓 存,降低访问数据库的频率。...fixed字段,针对固定的字典不提供编辑功能 字典与系统参数不要混为一谈,字典通常用于一类的数据,一组具有相同含义的数值(例如,供客户端下拉选择的枚举);而系统参数是针对某种配置或者某种系统常量的存在...关于缓存 有人认为缓存增加维护成本,一旦使用缓存,对于编辑的数据得立马刷新缓存,不然将会与预期不符,并且对于访问不频繁量少的数据还达不到使用缓存的级别;有人认为缓存提高效率,减少数据访问。

    3.8K22

    Python数据的处理(字典)—— (三)

    目录 一、字典的操作(增添,删除,改变健名的值) 二、查找一个字典是否包含特定的元素(“in 关键字处理”) 三、接下来就介绍下如何用循环打印字典的元素和值 前面我们谈到过,元组和列表要通过数字下标来访问...所以在Python字典尽管和列表或者元组很像,但是我们可以为元素自定义名称,下面就一个简单的实例来告诉大家字典的使用 下面我们就以一个公司的通讯录为例,为大家讲解一下字典的使用 字典是以 键 : 值...字典的访问直接通过键来访问 从这两行代码我们可以看出,字典使用 大括号来装 元素的, 然后我们用双引号放键名,后面加一个冒号,然后冒号后面 的是值,“键”与“值”   一一对应 Steve我们存放的三个元素...Bob"]=7654#将Bob元素更改为7654这个数值 print(employees["Bob"]) del employees["Steve"] #从字典删除Steve这个值 employees...["Jonh"] = 5432 #添加新的元素 print(employees) #显示键和值 程序运行结果: 如果我们需要修改键对应的值,这个和添加的方法是一样的 二、查找一个字典是否包含特定的元素

    1.4K20

    MySQL8.0数据字典实现一窥

    "两级缓存+持久化"结构 整个MySQL 8.0的数据字典实现在数据字典对象分布上呈现 |--Dictionary_client |--Shared_dictionary_cache |--Storage_adapte...,这时候就要调用Storage_adapter的接口来读取持久化存储数据对象了(MySQL数据字典持久化存储在InnoDB) 主要接口: core_get() 从m_core_registry(一个专门存放系统数据字典对象的...查询 2.1 key的定义 现在我们知道数据字典对象分布在dictionary_client/Shared_dictionary_cache/Storage_adapter,那么查询如何获取相应的数据字典对象呢...keypart_map:一个key可能包含了好几列的信息,MySQL使用bitmap(小端存储)的形式来标记到底会用到哪几列的。...tables这张数据字典表是如何创建的,包括表名/列的定义/索引的定义等;而与之对应的tables.h则是一些枚举类型,用来表示各个列/索引在表的相对位置。

    1.6K40

    你真的了解MySQL 8.0 数据字典吗?

    作者:叶盛,腾讯云数据库TDSQL开发工程师,从事数据库内核开发工作。 在MySQL数据字典信息内容包括表结构、数据库名或表名、字段的数据类型、视图、索引、表字段信息、存储过程、触发器等内容。...可是包含这些元数据数据字典不仅仅存在于数据库系统表(information_schema,mysql,sys),还存在于server层和InnoDB存储引擎的部分文件里,比如每个表都有一个对应的....数据字典信息不同步:前面已经提到了,因为字典信息既存在于MySQL server层,又存在于 InnoDB引擎 ,这就导致了元数据信息的不同步和冗余等问题; information_schema性能太差...MySQL 8.0,不再使用文件的方式来存储数据字典的信息,.frm、.trn,、.trg 和 .par文件都被彻底淘汰,所有的元数据都用InnoDB引擎来存储,这意味着MyISAM已经可以完全从MySQL...frm文件的IO开销; 优化器使用数据字典表上的索引来优化查询 MySQL8.0的数据字典实现和较老的版本的数据字典实现相比有了非常显著的变化,而本文将着重从源码角度对MySQL8.0 SQL层的数据字典实现进行分析与理解

    1.2K50
    领券