author:彭程
介绍
在安装完mysql后,我们会发现里边已经自带了4个默认的数据库,不同的mysql版本自带的默认数据库不同,本文使用的mysql版本为8.0.26。四个数据库如下:
- information_schema
- performance_schema
- mysql
- sys
information_schema
information_schema是一个信息数据库,它保存了mysql所有数据库的信息,如有多少个数据库,各个数据库有哪些表,各个表中的字段是什么数据类型,各个表中有哪些索引,各个数据库要什么权限才能访问。
数据库内表如下:
mysql> use information_schemaDatabase changedmysql> show tables;+---------------------------------------+| Tables_in_information_schema |+---------------------------------------+| ADMINISTRABLE_ROLE_AUTHORIZATIONS || APPLICABLE_ROLES || CHARACTER_SETS || CHECK_CONSTRAINTS || COLLATION_CHARACTER_SET_APPLICABILITY || COLLATIONS || COLUMN_PRIVILEGES || COLUMN_STATISTICS || COLUMNS || COLUMNS_EXTENSIONS || ENABLED_ROLES || ENGINES || EVENTS || FILES || INNODB_BUFFER_PAGE || INNODB_BUFFER_PAGE_LRU || INNODB_BUFFER_POOL_STATS || INNODB_CACHED_INDEXES || INNODB_CMP || INNODB_CMP_PER_INDEX || INNODB_CMP_PER_INDEX_RESET || INNODB_CMP_RESET || INNODB_CMPMEM || INNODB_CMPMEM_RESET || INNODB_COLUMNS || INNODB_DATAFILES || INNODB_FIELDS || INNODB_FOREIGN || INNODB_FOREIGN_COLS || INNODB_FT_BEING_DELETED || INNODB_FT_CONFIG || INNODB_FT_DEFAULT_STOPWORD || INNODB_FT_DELETED || INNODB_FT_INDEX_CACHE || INNODB_FT_INDEX_TABLE || INNODB_INDEXES || INNODB_METRICS || INNODB_SESSION_TEMP_TABLESPACES || INNODB_TABLES || INNODB_TABLESPACES || INNODB_TABLESPACES_BRIEF || INNODB_TABLESTATS || INNODB_TEMP_TABLE_INFO || INNODB_TRX || INNODB_VIRTUAL || KEY_COLUMN_USAGE || KEYWORDS || OPTIMIZER_TRACE || PARAMETERS || PARTITIONS || PLUGINS || PROCESSLIST || PROFILING || REFERENTIAL_CONSTRAINTS || RESOURCE_GROUPS || ROLE_COLUMN_GRANTS || ROLE_ROUTINE_GRANTS || ROLE_TABLE_GRANTS || ROUTINES || SCHEMA_PRIVILEGES || SCHEMATA || SCHEMATA_EXTENSIONS || ST_GEOMETRY_COLUMNS || ST_SPATIAL_REFERENCE_SYSTEMS || ST_UNITS_OF_MEASURE || STATISTICS || TABLE_CONSTRAINTS || TABLE_CONSTRAINTS_EXTENSIONS || TABLE_PRIVILEGES || TABLES || TABLES_EXTENSIONS || TABLESPACES || TABLESPACES_EXTENSIONS || TRIGGERS || USER_ATTRIBUTES || USER_PRIVILEGES || VIEW_ROUTINE_USAGE || VIEW_TABLE_USAGE || VIEWS |+---------------------------------------+79 rows in set (0.01 sec)
这些表主要可以分为以下五类:
- INFORMATION_SCHEMA General Tables 通用表
通用表具体信息可以查看官网介绍:https://dev.mysql.com/doc/refman/8.0/en/general-information-schema-tables.html,下面对一些表的内容做简要介绍:
COLLATIONS表:提供了关于各字符集的对照信息。
COLUMNS表提供关于表中列的信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。
mysql> show columns from ddm_group;+---------------+--------------+------+-----+---------+-------+| Field | Type | Null | Key | Default | Extra |+---------------+--------------+------+-----+---------+-------+| ddm_group_id | varchar(128) | NO | PRI | NULL | || uid | varchar(45) | YES | | NULL | || group_name | varchar(64) | YES | | NULL | || admin_user | varchar(64) | YES | | NULL | || admin_pwd | varchar(64) | YES | | NULL | || service_port | int | YES | | NULL | || admin_port | int | YES | | NULL | || mysql_charset | varchar(64) | YES | | NULL | || mysql_version | varchar(45) | YES | | NULL | || memo | varchar(256) | YES | | NULL | || gmt_create | timestamp | YES | | NULL | || gmt_modify | timestamp | YES | | NULL | || status | varchar(45) | YES | | NULL | |+---------------+--------------+------+-----+---------+-------+13 rows in set (0.01 sec)
COLUMN_PRIVILEGES表提供关于列特权的信息。它从mysql.columns_priv系统表中获取它的值。
ENGINES表提供了存储引擎的信息。用于检查是否支持存储引擎或查看默认引擎。
EVENTS表提供了有关事件管理器的信息。
FILES表提供关于MySQL表空间数据存储的文件的信息。FILES表提供了关于InnoDB数据文件的信息。在NDB集群中,该表还提供了关于存储NDB集群磁盘数据表的文件的信息。
KEYWORDS表列出了MySQL考虑的关键字,并为每一个表明它是否被保留。保留关键字在某些情况下可能需要特殊处理,例如作为标识符使用的特殊引号。该表为应用程序提供了MySQL关键字信息的运行时来源。
mysql> select * from keywords;+----------------------------------------+----------+| WORD | RESERVED |+----------------------------------------+----------+| ACCESSIBLE | 1 || ACCOUNT | 0 || ACTION | 0 || ACTIVE | 0 || ADD | 1 || ADMIN | 0 || AFTER | 0 |...| X509 | 0 || XA | 0 || XID | 0 || XML | 0 || XOR | 1 || YEAR | 0 || YEAR_MONTH | 1 || ZEROFILL | 1 || ZONE | 0 |+----------------------------------------+----------+738 rows in set (0.03 sec)
OPTIMIZER_TRACE表提供优化器跟踪语句时生成的信息。包括跟踪所使用的内存总量的限制。
PARAMETERS表提供关于存储例程(存储过程和存储函数)的参数的信息,以及关于存储函数的返回值的信息。PARAMETERS表不包括内置(本机)函数或可加载函数。
PARTITIONS表提供了关于表分区的信息。该表中的每一行对应于分区表的一个单独分区或子分区。
mysql> select * from partitions;+---------------+--------------------+------------------------------------------------------+----------------+-------------------+----------------------------+-------------------------------+------------------+---------------------+----------------------+-------------------------+-----------------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------------+---------------------+------------+----------+-------------------+-----------+-----------------+| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | PARTITION_NAME | SUBPARTITION_NAME | PARTITION_ORDINAL_POSITION | SUBPARTITION_ORDINAL_POSITION | PARTITION_METHOD | SUBPARTITION_METHOD | PARTITION_EXPRESSION | SUBPARTITION_EXPRESSION | PARTITION_DESCRIPTION | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | CREATE_TIME | UPDATE_TIME | CHECK_TIME | CHECKSUM | PARTITION_COMMENT | NODEGROUP | TABLESPACE_NAME |+---------------+--------------------+------------------------------------------------------+----------------+-------------------+----------------------------+-------------------------------+------------------+---------------------+----------------------+-------------------------+-----------------------+------------+----------------+-------------+-----------------+--------------+-----------+---------------------+---------------------+------------+----------+-------------------+-----------+-----------------+| def | ddm_console | ddm_group | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 4 | 4096 | 16384 | 0 | 0 | 0 | 2021-09-30 14:02:51 | 2021-09-30 15:38:14 | NULL | NULL | | | NULL || def | ddm_console | ddm_group_config_file | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 16384 | 0 | 32768 | 0 | 2021-09-30 14:02:52 | NULL | NULL | NULL | | | NULL || def | ddm_console | ddm_host_info | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | 16384 | 16384 | 0 | 0 | 0 | 2021-09-30 14:02:51 | 2021-09-30 14:23:35 | NULL | NULL | | | NULL || def | ddm_console | ddm_instance | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 1 | 16384 | 16384 | 0 | 32768 | 0 | 2021-09-30 14:02:52 | 2021-09-30 14:39:30 | NULL | NULL | | | NULL || def | ddm_console | ddm_map_file | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 16384 | 0 | 32768 | 0 | 2021-09-30 14:02:53 | NULL | NULL | NULL | | | NULL || def | information_schema | ADMINISTRABLE_ROLE_AUTHORIZATIONS | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 0 | 0 | 0 | 0 | 0 | 0 | 2021-09-10 09:58:58 | NULL | NULL | NULL | | | NULL |
PROCESSLIST表示当前由服务器中执行的线程组执行的操作。PROCESSLIST表是流程信息的一个来源。与show processlist语句的输出类似,PROCESSLIST表提供关于所有线程的信息,即使是属于其他用户的线程(如果您拥有PROCESS特权)。
mysql> select * from processlist;+----+-----------------+-----------------+--------------------+---------+---------+------------------------+---------------------------+| ID | USER | HOST | DB | COMMAND | TIME | STATE | INFO |+----+-----------------+-----------------+--------------------+---------+---------+------------------------+---------------------------+| 27 | root | localhost:64617 | information_schema | Query | 0 | executing | select * from processlist || 28 | root | localhost:62442 | information_schema | Sleep | 23 | | NULL || 5 | event_scheduler | localhost | NULL | Daemon | 1344848 | Waiting on empty queue | NULL |+----+-----------------+-----------------+--------------------+---------+---------+------------------------+---------------------------+3 rows in set (0.29 sec)
PROFILING表提供语句分析信息。它的内容对应于SHOW PROFILE和SHOW PROFILES语句生成的信息。
ROUTINES表提供有关存储例程(存储过程和存储函数)的信息。
SCHEMATA表提供了当前mysql实例中所有数据库的信息。show databases的结果取之此表。
mysql> select * from schemata;+--------------+--------------------+----------------------------+------------------------+----------+--------------------+| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | DEFAULT_ENCRYPTION |+--------------+--------------------+----------------------------+------------------------+----------+--------------------+| def | mysql | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO || def | information_schema | utf8 | utf8_general_ci | NULL | NO || def | performance_schema | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO || def | sys | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO || def | ddm_console | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |+--------------+--------------------+----------------------------+------------------------+----------+--------------------+5 rows in set (0.00 sec)
SCHEMA_PRIVILEGES表提供关于数据库的权限信息。它从mysql.db系统表中获取其值。
mysql> select * from schema_privileges;+-----------------------------+---------------+--------------------+----------------+--------------+| GRANTEE | TABLE_CATALOG | TABLE_SCHEMA | PRIVILEGE_TYPE | IS_GRANTABLE |+-----------------------------+---------------+--------------------+----------------+--------------+| 'mysql.sys'@'localhost' | def | sys | TRIGGER | NO || 'mysql.session'@'localhost' | def | performance_schema | SELECT | NO |+-----------------------------+---------------+--------------------+----------------+--------------+2 rows in set (0.00 sec)
STATISTICS表提供了关于表索引的信息。show index from schemaname.tablename的结果取之此表。
TABLES表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema,表类型,表引擎,创建时间等信息。show tables from schemaname的结果取之此表。
mysql> select * from tables;+---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+---------------------------------------+------------------------------------------+| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE | ENGINE | VERSION | ROW_FORMAT | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | MAX_DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME | UPDATE_TIME | CHECK_TIME | TABLE_COLLATION | CHECKSUM | CREATE_OPTIONS | TABLE_COMMENT |+---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+---------------------------------------+------------------------------------------+| def | mysql | columns_priv | BASE TABLE | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 4194304 | NULL | 2021-09-10 09:58:46 | NULL | NULL | utf8_bin | NULL | row_format=DYNAMIC stats_persistent=0 | Column privileges || def | mysql | component | BASE TABLE | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 4194304 | 1 | 2021-09-10 09:58:46 | NULL | NULL | utf8_general_ci | NULL | row_format=DYNAMIC | Components || def | mysql | db | BASE TABLE | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | 0 | 16384 | 4194304 | NULL | 2021-09-10 09:58:46 | NULL | NULL | utf8_bin | NULL | row_format=DYNAMIC stats_persistent=0 | Database privileges || def | mysql | default_roles | BASE TABLE | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 0 | 4194304 | NULL | 2021-09-10 09:58:46 | NULL | NULL | utf8_bin | NULL | row_format=DYNAMIC stats_persistent=0 | Default roles |...| def | sys | x$waits_by_user_by_latency | VIEW | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2021-09-10 09:58:56 | NULL | NULL | NULL | NULL | NULL | VIEW || def | sys | x$waits_global_by_latency | VIEW | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | 2021-09-10 09:58:57 | NULL | NULL | NULL | NULL | NULL | VIEW || def | ddm_console | ddm_group | BASE TABLE | InnoDB | 10 | Dynamic | 4 | 4096 | 16384 | 0 | 0 | 0 | NULL | 2021-09-30 14:02:51 | 2021-09-30 15:38:14 | NULL | utf8mb4_bin | NULL | | || def | ddm_console | ddm_group_config_file | BASE TABLE | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 32768 | 0 | 1 | 2021-09-30 14:02:52 | NULL | NULL | utf8mb4_bin | NULL | | || def | ddm_console | ddm_host_info | BASE TABLE | InnoDB | 10 | Dynamic | 1 | 16384 | 16384 | 0 | 0 | 0 | NULL | 2021-09-30 14:02:51 | 2021-09-30 14:23:35 | NULL | utf8mb4_0900_ai_ci | NULL | | || def | ddm_console | ddm_instance | BASE TABLE | InnoDB | 10 | Dynamic | 1 | 16384 | 16384 | 0 | 32768 | 0 | NULL | 2021-09-30 14:02:52 | 2021-09-30 14:39:30 | NULL | utf8mb4_bin | NULL | | || def | ddm_console | ddm_map_file | BASE TABLE | InnoDB | 10 | Dynamic | 0 | 0 | 16384 | 0 | 32768 | 0 | 1 | 2021-09-30 14:02:53 | NULL | NULL | utf8mb4_bin | NULL | | |+---------------+--------------------+------------------------------------------------------+-------------+--------------------+---------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+---------------------------------------+------------------------------------------+332 rows in set (0.05 sec)
TRIGGERS表提供了有关触发器的信息。
VIEWS表提供了关于数据库中视图的信息。必须具有SHOW VIEW权限才能访问该表。
- INFORMATION_SCHEMA InnoDB Tables InnoDB表
InnoDB表具体信息可以查看官网介绍:https://dev.mysql.com/doc/refman/8.0/en/innodb-information-schema-tables.html,下面对一些表的内容做简要介绍:
INNODB_BUFFER_PAGE表提供了InnoDB缓冲池中每个页面的信息。
INNODB_BUFFER_POOL_STATS表提供了InnoDB缓冲池状态信息,包括缓冲池容量、空闲页数、已修改(脏的)数据库页的数量等等,show engine innodb status的结果取之此表。
INNODB_COLUMNS表提供了InnoDB表列的元数据,包括列名、列的长度、列的主要类型和精确类型等信息。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS where TABLE_ID = 1062\G*************************** 1. row ***************************TABLE_ID: 1062NAME: variablePOS: 0MTYPE: 12PRTYPE: 16716047LEN: 512HAS_DEFAULT: 0DEFAULT_VALUE: NULL*************************** 2. row ***************************TABLE_ID: 1062NAME: valuePOS: 1MTYPE: 12PRTYPE: 16715791LEN: 512HAS_DEFAULT: 0DEFAULT_VALUE: NULL*************************** 3. row ***************************TABLE_ID: 1062NAME: set_timePOS: 2MTYPE: 3PRTYPE: 525319LEN: 4HAS_DEFAULT: 0DEFAULT_VALUE: NULL*************************** 4. row ***************************TABLE_ID: 1062NAME: set_byPOS: 3MTYPE: 12PRTYPE: 16715791LEN: 512HAS_DEFAULT: 0DEFAULT_VALUE: NULL4 rows in set (0.00 sec)
INNODB_DATAFILES表提供了InnoDB file-per-table和一般表空间的数据文件路径信息。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_DATAFILES WHERE SPACE = 8\G*************************** 1. row ***************************SPACE: 0x38PATH: .\ddm_console\ddm_group.ibd1 row in set (0.00 sec)
INNODB_FIELDS表提供了关于InnoDB索引的关键列(字段)的元数据。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FIELDS WHERE INDEX_ID = 165\G*************************** 1. row ***************************INDEX_ID: 0x313635NAME: ddm_group_idPOS: 01 row in set (0.00 sec)
INNODB_FOREIGN表提供了关于InnoDB外键的元数据。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FOREIGN\G*************************** 1. row ***************************ID: ddm_console/fk_ddm_instance_ddm_group1FOR_NAME: ddm_console/ddm_instanceREF_NAME: ddm_console/ddm_groupN_COLS: 1TYPE: 48*************************** 2. row ***************************ID: ddm_console/fk_ddm_instance_ddm_host_info1FOR_NAME: ddm_console/ddm_instanceREF_NAME: ddm_console/ddm_host_infoN_COLS: 1TYPE: 48*************************** 3. row ***************************ID: ddm_console/fk_group_config_file_ddm_group1FOR_NAME: ddm_console/ddm_group_config_fileREF_NAME: ddm_console/ddm_groupN_COLS: 1TYPE: 48*************************** 4. row ***************************ID: ddm_console/fk_map_file_ddm_group1FOR_NAME: ddm_console/ddm_map_fileREF_NAME: ddm_console/ddm_groupN_COLS: 1TYPE: 484 rows in set (0.02 sec)
INNODB_INDEXES表提供了InnoDB索引的元数据。包括索引名,类型,所属表ID和在B-tree的根叶号等等。
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEXES WHERE TABLE_ID = 1070\G*************************** 1. row ***************************INDEX_ID: 166NAME: PRIMARYTABLE_ID: 1070TYPE: 3N_FIELDS: 15PAGE_NO: 4SPACE: 9MERGE_THRESHOLD: 50*************************** 2. row ***************************INDEX_ID: 167NAME: fk_ddm_instance_ddm_group1_idxTABLE_ID: 1070TYPE: 0N_FIELDS: 2PAGE_NO: 5SPACE: 9MERGE_THRESHOLD: 50*************************** 3. row ***************************INDEX_ID: 168NAME: fk_ddm_instance_ddm_host_info1_idxTABLE_ID: 1070TYPE: 0N_FIELDS: 2PAGE_NO: 6SPACE: 9MERGE_THRESHOLD: 503 rows in set (0.00 sec)
- INFORMATION_SCHEMA Thread Pool Tables 线程池表
线程池表具体信息可以查看官网介绍:https://dev.mysql.com/doc/refman/8.0/en/thread-pool-information-schema-tables.html,下面对一些表的内容做简要介绍:
TP_THREAD_GROUP_STATE提供了线程池线程组状态信息
TP_THREAD_GROUP_STATS提供了线程组统计信息
TP_THREAD_STATE提供了线程池线程状态的信息
INFORMATION_SCHEMA Connection-Control Tables 连接控制表
INFORMATION_SCHEMA MySQL Enterprise Firewall Tables 企业防火墙表
