这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_keys
那fignder_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_collation_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_collation_name:utf8_general_ci sql_path:null default_encryption:no ...
没有Information_Schema.
完全对应的表mysql.indexes.
,但Information_Schema.Statistics.
包含很多相同的信息。
截至目前,没有Information_Schema.
对应的表mysql.foreign_keys
那mysql.foreign_key_column_usage
。获取外键信息的标准SQL方法是使用Information_Schema.
REFERENTIAL_CONSTRAINTS
和key_column_usage.
表;控件上的视图现在实现了这些表foreign_keys
那fignder_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.
:有关密码更改的信息。
这些系统表包含有关组件,用户定义函数和服务器端插件的信息:
成分
:使用的服务器组件注册表安装组件
。此表中列出的任何组件都是在服务器启动序列期间的加载程序服务安装。看第5.5.1节“安装和卸载组件”。。函数
:使用的用户定义函数(UDFS)的注册表创建功能
。在正常启动序列期间,服务器加载此表中注册的UDF。如果服务器已启动--skip-grant-tables
选项,未加载表中注册的UDFS并不可用。看5.7.1节“安装和卸载用户自定义函数”。笔记就像
mysql.func
系统表,性能模式user_defining_functions.
表中列出了使用创建功能
。不像mysql.func
表,桌子user_defining_functions.
表还列出了服务器组件或插件自动安装的UDF。这种差异是user_defining_functions.
优选mysql.func
要检查安装了哪些UDF。看第27.12.21.8节,“user_defined_functions表”。插件
:服务器端插件的注册表安装插件
。在正常启动序列期间,服务器加载该表中注册的插件。如果服务器已启动--skip-grant-tables
选项,在表中注册的插件未加载并且不可用。看第5.6.1节“安装和卸载插件”。。
服务器使用这些系统表来支持复制:
gtid_execute
:用于存储GTID值的表。看mysql。gtid_executed表。ndb_binlog_index.
:NDB群集复制的二进制日志信息。仅当使用服务器构建时才创建此表ndbcluster.
支持。看第23.6.4节“NDB集群复制架构和表”。slave_master_info.
那slave_relay_log_info.
那slave_wayer_info.
:用于存储在副本服务器上的复制信息。看第17.2.4节“中继日志和复制元数据存储库”。
所有表刚刚列出使用InnoDB
存储引擎。
这些系统表是供优化器使用的:
Innodb_index_stats.
那innodb_table_stats
: 用于InnoDB
持久优化器统计信息。看第15.8.10.1节,“配置持久化优化器统计参数”。server_cost.
那engine_cost
:优化器成本模型使用包含有关查询执行期间发生的操作的成本估算信息的表。server_cost.
包含通用服务器操作的优化成本估算。engine_cost
包含特定于特定存储引擎的操作的估计值。看第8.9.5节,“优化成本模型”。
其他系统表不适合前面的类别:
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
系统表空间。