10bet网址
MySQL 8.0参考手册
相关文件10bet官方网站 下载本手册 从本手册中摘录

5.3 MySQL系统架构

mysql架构是系统模式。它包含要在运行时存储MySQL Server所需信息的表。广泛的分类是mysql架构包含存储数据库对象元数据的数据字典表,以及用于其他操作目的的系统表。以下讨论进一步将系统表集其分为较小类别。

此部分的其余部分枚举每个类别中的表,具有交叉引用以获取其他信息。数据字典表和系统表使用InnoDB存储引擎,除非另有说明。

mysql系统表和数据字典表位于单个表中InnoDB表空间文件命名mysql.ibd.在MySQL数据目录下。在此之前,这些表是在mysql数据库目录。

可以为数据启用数据静止加密mysql系统架构表空间。有关更多信息,请参阅第15.13节“InnoDB数据 - 休息加密”

数据字典表

这些表包括数据字典,其中包含关于数据库对象的元数据。有关其他信息,请参阅第14章,MySQL数据字典

重要的

数据字典在MySQL 8.0中是新的。与以前的MySQL版本相比,启用了数据字典的服务器有一些常规操作差异。有关详细信息,请参阅第14.7节,“数据字典使用差异”。此外,对于从MySQL 5.7升级到MySQL 8.0,升级过程的不同之处在于以前的MySQL版本有所不同,并且需要通过检查特定的先决条件来验证您的安装的升级准备情况。有关更多信息,请参阅第2.11节“升级mysql”,特别是第2.11.5节,“为升级准备安装”

  • 目录:目录信息。

  • character_sets:有关可用字符集的信息。

  • check_constraints.:信息查看在表上定义的约束。看第13.1.20.6节“检查约束”

  • 拼写:有关每个字符集的驻留的信息。

  • column_statistics.:列值的直方图统计信息。看第8.9.6节,“优化统计”

  • column_type_elements.:关于列使用的类型的信息。

  • :表中列的信息。

  • dd_properties.:一个表标识数据字典属性,例如其版本。服务器使用此方法来确定数据字典是否必须升级到更新版本。

  • 事件:有关事件调度​​程序事件的信息。看第25.4节,“使用事件调度程序”。如果服务器已启动--skip-grant-tables选项,事件调度程序已禁用,表中注册的事件不会运行。看第25.4.2节“事件调度程序配置”

  • foreign_keysfignder_key_column_usage.:关于外钥匙的信息。

  • index_column_usage.:索引所使用的列的信息。

  • index_partitions.:索引所使用的分区信息。

  • index_stats:用于存放何时生成的动态索引统计信息分析表执行。

  • 索引:关于表索引的信息。

  • innodb_ddl_log.:存储DDL日志以进行崩溃安全的DDL操作。

  • parameter_type_elements.:有关存储过程和功能参数的信息,以及存储功能的返回值。

  • 参数:有关存储过程和功能的信息。看第25.2节“使用存储的例程”

  • resource_groups.:资源组信息。看第5.1.16节,“资源组”

  • 惯例:有关存储过程和功能的信息。看第25.2节“使用存储的例程”

  • 架构:关于模式的信息。在MySQL中,模式是一个数据库,因此该表提供了关于数据库的信息。

  • st_spatial_reference_systems.:有关用于空间数据的可用空间参考系统的信息。

  • table_partition_values.:有关表分区使用的值的信息。

  • table_partitions.:有关表使用的分区的信息。

  • table_stats.:有关动态表统计信息生成的信息分析表执行。

  • 桌子:有关数据库中表的信息。

  • tablespace_files.:有关表空间使用的文件的信息。

  • 表空间:有关活动表空间的信息。

  • 触发:有关触发器的信息。

  • 查看_Routine_usage.:有关它们之间的视图和存储功能之间的依赖性的信息。

  • view_table_usage.:用于跟踪视图和其底层表之间的依赖项。

数据字典表是不可见的。它们不能被阅读选择的输出中不出现显示表格,并没有列在INFORMATION_SCHEMA。表桌子,等等。但是,在大多数情况下是有对应的Information_Schema.可以查询的表。从概念上讲,Information_Schema.提供了MySQL公开数据字典元数据的视图。例如,您无法从中选择mysql.schemata.表直接:

mysql>从mysql.schemata中选择*;错误3554(hy000):访问数据字典表'mysql.schemata'被拒绝。

相反,从相应的信息中选择该信息Information_Schema.桌子:

MySQL> Select * from Information_schema.schemata \ g *************************** 1.行*************************** catalog_name:def schema_name:mysql default_character_set_name:utf8mb4 default_collat​​ion_name:utf8mb4_0900_ai_ci sql_path:null default_encryption:no *************************** 2.行*************************** catalog_name:def schema_name:Information_schema default_character_set_name:utf8 default_collat​​ion_name:utf8_general_ci sql_path:null default_encryption:no ...

没有Information_Schema.完全对应的表mysql.indexes.,但Information_Schema.Statistics.包含很多相同的信息。

截至目前,没有Information_Schema.对应的表mysql.foreign_keysmysql.foreign_key_column_usage。获取外键信息的标准SQL方法是使用Information_Schema.REFERENTIAL_CONSTRAINTSkey_column_usage.表;控件上的视图现在实现了这些表foreign_keysfignder_key_column_usage.和其他数据字典表。

MySQL 8.0之前的一些系统表已经被数据字典表取代,不再存在于mysql系统模式:

  • 事件数据字典桌取代了事件从MySQL 8.0之前的表。

  • 参数惯例数据字典表一起取代了从MySQL 8.0之前的表。

授予系统表

这些系统表包含有关用户帐户和它们所持相关的权限的授予信息。有关这些表的结构,内容和目的的其他信息,请参阅第6.2.3节“授予表”

截至MySQL 8.0,授予表是InnoDB(交易)表。以前,这些是myisam.(非讲)表。授予表存储引擎的变更将伴随MySQL 8.0的随附变更为帐户管理陈述的行为,如创建用户授予。以前,命名为多个用户的帐户管理陈述可能会成功为某些用户并失败。该语句现在是事务性的,并且在所有命名用户都会成功回滚,并且如果发生任何错误,则没有效果。

笔记

如果MySQL从旧版本升级但授予表尚未从中升级myisam.InnoDB,服务器认为它们是只读的,帐户管理语句会产生错误。有关升级说明,请参见第2.11节“升级mysql”

  • 用户:用户帐户,全局权限和其他非专利列。

  • global_grants.:对用户的动态全局权限分配;看静态与动态特权

  • D b:数据库级权限。

  • tables_priv.:表级权限。

  • columns_priv.:列级特权。

  • procs_priv:存储过程和函数权限。

  • proxies_priv.:代理用户权限。

  • default_roles.:该表列出了用户连接和认证后或执行后要激活的默认角色设置角色默认值

  • 角色_对策:此表列出了角色子图的边缘。

    一个给定的用户表行可能引用用户帐户或角色。属性,服务器可以区分一行是表示用户帐户、角色,还是两者都表示角色_对策关于身份验证id之间关系的信息。

  • password_history.:有关密码更改的信息。

对象信息系统表

这些系统表包含有关组件,用户定义函数和服务器端插件的信息:

日志系统表

服务器使用这些系统表进行日志记录:

  • general_log:常规查询日志表。

  • slow_log.:慢查询日志表。

日志表使用CSV存储引擎。

有关更多信息,请参阅第5.4节“MySQL Server Logs”

服务器端帮助系统表

这些系统表包含服务器端帮助信息:

  • help_category.:帮助类别的信息。

  • help_keyword.:与帮助主题相关的关键字。

  • help_relation:帮助关键词与主题之间的映射。

  • help_topic.:帮助主题内容。

有关更多信息,请参阅第5.1.17节“服务器端帮助支持”

时区系统表

这些系统表包含时区信息:

  • 时区:时间区域ID以及它们是使用闰秒。

  • time_zone_leap_second:闰秒发生时。

  • time_zone_name.:时区id和名称的对应关系。

  • time_zone_transitiontime_zone_transition_type.:时区描述。

有关更多信息,请参阅第5.1.15节“MySQL Server时区支持”

复制系统表

服务器使用这些系统表来支持复制:

所有表刚刚列出使用InnoDB存储引擎。

优化系统表

这些系统表是供优化器使用的:

杂项系统表

其他系统表不适合前面的类别:

  • audit_log_filter.audit_log_user.:如果安装了MySQL企业审计,这些表提供审计日志过滤器定义和用户帐户的持久存储。看审计日志表

  • firewall_group_allowlist.防火墙_小组防火墙_Memebership.防火墙_Users.防火墙_Whitelist.:如果安装了MySQL Enterprise防火墙,则这些表提供了防火墙使用的信息的持久存储。看第6.4.7节“MySQL Enterprise防火墙”

  • 服务器:使用联邦存储引擎。看第16.8.2.2节“使用Create Server创建联合表”

  • innodb_dynamic_metadata.:使用InnoDB存储引擎存储快速更改的表元数据,如自动增量计数器值和索引树损坏标志。替换驻留在的数据字典缓冲区表InnoDB系统表空间。