MySQL 默认数据库介绍
MySQL 安装后会自动创建几个默认数据库,这些数据库为信息架构、性能监控、系统管理等提供了丰富的功能,以下是对每个默认数据库的详细介绍:
information_schema
information_schema
是一个信息数据库,主要用于存储关于 MySQL 服务器所维护的所有其他数据库的信息,这个数据库包含了关于数据库的元数据,如数据库名、数据库的表、表栏的数据类型与访问权限等,每当在 MySQL 中创建一个新的数据库,或者在已有的数据库中增删改表,相关的信息都会被记录在information_schema
库中。
表名 | 描述 |
TABLES | 提供了关于数据库中的表的信息(包括视图),详细表述了某个表属于哪个 schema,表类型,表引擎,创建时间等信息,show tables from schemaname 的结果取之此表。 |
COLUMNS | 提供了表中的列信息,详细表述了某张表的所有列以及每个列的信息,show columns from schemaname.tablename 的结果取之此表。 |
STATISTICS | 提供了关于表索引的信息,show index from schemaname.tablename 的结果取之此表。 |
USER_PRIVILEGES | 给出了关于全程权限的信息,该信息源自mysql.user 授权表(非标准表)。 |
SCHEMA_PRIVILEGES | 给出了关于方案(数据库)权限的信息,该信息来自mysql.db 授权表(非标准表)。 |
TABLE_PRIVILEGES | 给出了关于表权限的信息,该信息源自mysql.tables_priv 授权表(非标准表)。 |
COLUMN_PRIVILEGES | 给出了关于列权限的信息,该信息源自mysql.columns_priv 授权表(非标准表)。 |
CHARACTER_SETS | 提供了 MySQL 实例可用字符集的信息,SHOW CHARACTER SET 结果集取之此表。 |
COLLATIONS | 提供了关于各字符集的对照信息。 |
COLLATION_CHARACTER_SET_APPLICABILITY | 指明了可用于校对的字符集,这些列等效于SHOW COLLATION 的前两个显示字段。 |
TABLE_CONSTRAINTS | 描述了存在约束的表,以及表的约束类型。 |
KEY_COLUMN_USAGE | 描述了具有约束的键列。 |
ROUTINES | 提供了关于存储子程序(存储程序和函数)的信息,ROUTINES 表不包含自定义函数(UDF),名为mysql.proc name 的列指明了对应于INFORMATION_SCHEMA.ROUTINES 表的mysql.proc 表列。 |
VIEWS | 给出了关于数据库中的视图的信息,需要有show views 权限,否则无法查看视图信息。 |
TRIGGERS | 提供了关于触发程序的信息,必须有super 权限才能查看该表。 |
performance_schema
performance_schema
主要用于监控 MySQL 服务器的性能参数,它提供了大量的表和视图,用于收集各种性能指标,如服务器执行的状态、锁定等待时间、线程缓存的使用情况等,通过查询performance_schema
中的数据,可以帮助数据库管理员深入了解服务器的性能状况,及时发现并解决潜在的性能问题。
sys
sys
数据库是一个包含了一系列视图、存储过程和函数的特殊数据库,用于帮助数据库管理员更好地管理和维护 MySQL 服务器,它提供了一些实用的工具和功能,如性能模式、用户管理和系统参数管理,通过sys
数据库,管理员可以方便地查看服务器的状态、监控性能指标、优化查询等。
mysql
mysql
是 MySQL 服务器的默认数据库,它包含了关于 MySQL 服务器的系统表和元数据,这些系统表包括用户权限信息、系统变量设置以及各种内部管理相关的表,通过mysql
数据库,可以对 MySQL 服务器进行全面的配置和管理,包括用户管理、权限分配和数据备份等操作。
从 MySQL 8.0 开始,mysql
系统表和数据字典表使用 InnoDB 存储引擎,存储在 MySQL 数据目录下的mysql.ibd
表空间文件中,在 MySQL 5.7 之前,这些系统表使用 MyISAM 存储引擎,存储在mysql
数据库文件目录下各自的表空间文件中,为了便于理解和使用,mysql
系统数据库中的表可以分为多种类别,下面我们分别进行介绍。
数据字典表
这些表构成了 MySQL 的数据字典,也就是关于数据库对象的元数据,数据字典表对于用户而言是不可见的,不能使用SELECT
进行查询,也不会出现在SHOW TABLES
或者INFORMATION_SCHEMA.TABLES
表中,不过,大多数表可以通过INFORMATION_SCHEMA
数据库中相应的视图进行查询。
我们不能直接查询mysql.tables
表:
mysql> select * from mysql.tables; ERROR 3554 (HY000): Access to data dictionary table 'mysql.tables' is rejected.
不过,可以通过INFORMATION_SCHEMA.TABLES
查询数据库中的表:
mysql> select * from information_schema.tables;
MySQL 8.0 包括以下数据字典表:
表名 | 描述 |
catalogs | 系统目录(Catalog)信息。 |
character_sets | 系统支持的字符集。 |
check_constraints | CHECK 约束信息。 |
collations | 字符集支持的排序规则。 |
column_statistics | 字段的直方图统计信息。 |
column_type_elements | 字段的数据类型信息。 |
columns | 表中的字段信息。 |
dd_properties | 存储数据字典的属性,例如版本,服务器利用这些信息决定是否需要升级数据字典。 |
events | 事件调度器中的事件信息。 |
foreign_keys | 外键相关的信息。 |
foreign_key_column_usage | 外键列的使用情况。 |
index_column_usage | 索引字段信息。 |
index_partitions | 索引分区信息。 |
index_stats | ANALYZE TABLE 命令生成的动态索引统计。 |
indexes | 表中的索引信息。 |
innodb_ddl_log | 支持原子 DDL 操作的日志。 |
parameter_type_elements | 存储过程和函数的参数信息,以及存储函数的返回值类型 |
parameters | 关于存储过程和函数的信息。 |
resource_groups | 关于资源组的信息。 |
routines | 关于存储过程和函数的信息。 |
schemata | 关于数据库/模式的信息,在 MySQL 中,模式和数据库是相同的概念。 |
st_spatial_reference_systems | 可以用于空间数据的空间参照系统。 |
table_partition_values | 表分区使用的分区值。 |
table_partitions | 表的分区信息。 |
table_stats | ANALYZE TABLE 命令生成的动态表统计。 |
tables | 数据库中的表。 |
tablespace_files | 表空间使用的文件。 |
tablespaces | 活动表空间。 |
triggers | 触发器。 |
view_routine_usage | 视图和存储函数之间的依赖关系。 |
view_table_usage | 视图和基表之间的依赖关系。 |
从 MySQL 8.0 开始,一些information_schema
数据字典表取代了之前的系统表,这些系统表不再存在于mysql
系统数据库中:
data_dictionary
数据字典表events
取代了之前的 event 系统表。
data_dictionary
数据字典表parameters
和routines
共同取代了之前的 system table。
MySQL 安装后的默认数据库提供了丰富的功能和工具,用于帮助数据库管理员更好地管理和维护 MySQL 服务器,通过了解这些默认数据库的作用以及各个表所存储的数据含义,可以更好地利用这些工具和功能来提高服务器的性能和可靠性。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1239747.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复