Mysql Schema是⼀个系统库,表中存储了MySQL服务器运行时所需的信息。广义上,mysql schema包含存储MySQL程序基本数据的数据字典和用于其他操作目的的系统表。数据字典表和系统表位于数据目录下一个名为mysql.ibd 的表空间文件中,使用的是InnoDB存储引擎。
自带的库:
主要理解mysql库。
1、数据字典
MySQL 的数据字典,用来存储有关数据库对象自身的信息,不可以随意修改,否则可能造成服务器无法运行。character_sets就是有关可用字符集的信息,还有一些常见的:
数据字典表只能在调试版本访问,发行版本访问不了。不过可以通过INFORMATION_SCHEMA命令来查看可以查看的某些内容,比如
select * from INFORMATION_SCHEMA.CHARACTER_SETS;
2、系统表
系统表按功能大致可以分为以下几类:权限授予系统表、对象信息系统表、日志系统表、服务器端帮助系统表、时区系统表、复制系统表、优化器系统表、杂项系统表。
mysql库中的user表主要是关于用户的授权。两个查询的SQL语句:
desc user;
select * from user\G;
各种系统表
权限授予系统表
包含有关用户账户及账户拥有的权限授权信息,主要的表有:
• user :用户账户、全局权限和其他列。
• global_grants :为用户分配的动态全局权限。
• db :数据库级权限。
• tables_priv :表级权限。
• columns_priv : 列级权限。
• procs_priv : 存储过程和函数权限。
• proxies_priv : 代理用户权限。
• default_roles :列出了用户连接和认证后要激活的默认角色。
• role_edges : user 表的关联表,区分 user 表中某⼀行记录是账户还是角色。
• password_history :密码更改的信息。
对象信息系统表
包含有关组件、可加载的服务器插件和函数的信息:
component :使用 INSTALL COMPONENT 安装的服务器组件,表中列出了在服务器启动期间安装的组件。
func : 使用 CREATE FUNCTION 安装的可加载函数,表中列出了在服务器启动期间加载的函数。
plugin :使用 INSTALL PLUGIN 安装的服务器插件,表中列出了在服务器启动期间安装的插件。
日志系统表
服务器使用日志系统表进行日志记录:
• general_log :一般查询日志表。
• slow_log :慢查询日志表。
⽇志表使用 CSV 存储引擎。
服务器端帮助系统表
包含服务器端帮助信息:
• help_category :有关帮助类别的信息。
• help_keyword :与帮助主题关联的关键字。
• help_relation :帮助关键字和主题之间的映射。
• help_topic :帮助主题内容。
时区系统表
包含时区信息:
• time_zone :时区 ID 以及是否使用闰秒。
• time_zone_leap_second :发生闰秒时如何修正。
• time_zone_name : 时区 ID 和名称之间的映射。
• time_zone_transition,time_zone_transition_type : 时区说明及偏移量。
复制系统表
服务器使用以下系统表来支持复制
• gtid_executed :用于存储 GTID 的值。
• ndb_binlog_index :用于NDB Cluster 复制的二进制日志信息。只有在支持 NDB CLUSTER 的服务器才会创建此表,我们的课程不讨论NDB 的相关内容
• slave_master_info,slave_relay_log_info,slave_worker_info : 用于存储从节点服务器上的复制信息。
以上几张表都使用 InnoDB 存储引擎。
优化器系统表
这些系统表供优化器使用:
• innodb_index_stats,innodb_table_stats : 用于 InnoDB 的持久优化器统计信息。
• server_cost,engine_cost :优化器成本模型使用的表,包含查询期间发生的操作成本估算信息。server_cost 包含服务器操作的优化器成本估算。 engine_cost 包含对特定存储引擎操作的估计。
杂项系统表
• 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 存储引擎用来存储快速变化的表元数据,例如自动递增计数器值和索引树损坏标志。
结束。