mysql System Schema (mysql系统库)
Mysql Schema是⼀个系统库,表中存储了MySQL服务器运⾏时所需的信息。⼴义上,mysqlschema包含存储数据库对象元数据的数据字典和⽤于其他操作⽬的的系统表。数据字典表和系统表位于数据⽬录下⼀个名为 mysql.ibd 的表空间⽂件中,使⽤的是InnoDB存储引擎。
1 数据字典
- MySQL 的数据字典,⽤来存储有关数据库对象⾃⾝的信息,不可以随意修改,否则可能造成服务器⽆法运⾏:以下列出⼏个常⻅的数据字典表:
- character_sets :有关可⽤字符集的信息
- check_constraints :有关表上定义的 CHECK 约束的信息
- collations :每个字符集的排序规则信息
- column_type_elements :列类型的信息
- columns :有关表中列的信息
- indexes : 有关表索引的信息
- tables :有关数据库中表的信息
- tablespace_files :有关表空间使⽤的⽂件信息
- tablespaces :有关活动表空间的信息
- triggers :有关触发器的信息
- 数据字典表是受保护的,只能在调试版本中访问,在发⾏版中没有权限访问,如果在发⾏版本中查询表中的数据,出提⽰拒绝访问:
- INFORMATION_SCHEMA 实现了某些数据字典的视图,可以通过视图查看某些数据字典的内容:
# 通过INFORMATION_SCHEMA中的视图访问可⽤字符集的信息
mysql> SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS;
2 系统表
系统表按功能⼤致可以分为以下⼏类:权限授予系统表、对象信息系统表、⽇志系统表、服务器端帮助系统表、时区系统表、复制系统表、优化器系统表、杂项系统表。mysql系统库中的表如下所⽰:
2.1 权限授予系统表
包含有关⽤⼾帐⼾及帐⼾拥有的权限授权信息,主要的表有:
- user :⽤⼾帐⼾、全局权限和其他列。
- global_grants :为⽤⼾分配的动态全局权限;
- db :数据库级权限。
- tables_priv :表级权限。
- columns_priv : 列级权限。
- procs_priv : 存储过程和函数权限。
- proxies_priv : 代理⽤⼾权限。
- default_roles :列出了⽤⼾连接和认证后要激活的默认⻆⾊。
- role_edges : user 表的关联表,区分 user 表中某⼀⾏记录是帐⼾还是⻆⾊
- password_history :密码更改的信息
2.2 对象信息系统表
包含有关组件、可加载的服务器插件和函数的信息:
component :使⽤ INSTALL COMPONENT 安装的服务器组件,表中列出了在服务器启动期间安装的组件。
func : 使⽤ CREATE FUNCTION 安装的可加载函数,表中列出了在服务器启动期间加载的函数。
plugin :使⽤ INSTALL PLUGIN 安装的服务器插件,表中列出了在服务器启动期间安装的插件。
2.3 ⽇志系统表
服务器使⽤⽇志系统表进⾏⽇志记录:
general_log
:⼀般查询⽇志表。slow_log
:慢查询⽇志表。
⽇志表使⽤ CSV 存储引擎。
2.4 服务器端帮助系统表
包含服务器端帮助信息:
- help_category :有关帮助类别的信息。
- help_keyword :与帮助主题关联的关键字。
- help_relation :帮助关键字和主题之间的映射。
- help_topic :帮助主题内容。
2.5 时区系统表
包含时区信息:
- time_zone :时区 ID 以及是否使⽤闰秒。
- time_zone_leap_second :发⽣闰秒时如何修正。
- time_zone_name : 时区 ID 和名称之间的映射。
- time_zone_transition , time_zone_transition_type : 时区说明及偏移量。
2.6 复制系统表
服务器使⽤以下系统表来⽀持复制,有关复制的内容我们在主从复制专题中详细介绍
- gtid_executed :⽤于存储 GTID 的值。
- ndb_binlog_index :⽤于NDB Cluster 复制的⼆进制⽇志信息。只有在⽀持 NDB CLUSTER 的服务器才会创建此表
- slave_master_info , slave_relay_log_info , slave_worker_info : ⽤于存储从节点服务器上的复制信息。
以上⼏张表都使⽤ InnoDB 存储引擎。
2.7 优化器系统表
这些系统表供优化器使⽤:
- innodb_index_stats , innodb_table_stats : ⽤于 InnoDB 的持久优化器统计信息。
- server_cost , engine_cost :优化器成本模型使⽤的表,包含查询期间发⽣的操作成本估算信息。 server_cost 包含服务器操作的优化器成本估算。 engine_cost 包含对特定存储引擎操作的估计。
2.8 杂项系统表
- audit_log_filter , audit_log_user : 如果安装了 MySQL Enterprise Audit,存储审计⽇志过滤器定义和⽤⼾帐⼾。
- firewall_group_allowlist , firewall_groups , firewall_memebership ,firewall_users , firewall_whitelist :如果安装了 MySQL Enterprise Firewall,这些存储表防⽕墙的使⽤信息。
- servers :由 FEDERATED 存储引擎使⽤。
- innodb_dynamic_metadata :由 InnoDB 存储引擎⽤来存储快速变化的表元数据,例如⾃动递增计数器值和索引树损坏标志。