第25章INFORMATION_SCHEMA表

目录

25.1简介
25.2 INFORMATION_SCHEMA CHARACTER_SETS表
25.3 INFORMATION_SCHEMA CHECK_CONSTRAINTS表
25.4 INFORMATION_SCHEMA COLLATIONS表
25.5 INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表
25.6 INFORMATION_SCHEMA列表
25.7 INFORMATION_SCHEMA COLUMN_PRIVILEGES表
25.8 INFORMATION_SCHEMA COLUMN_STATISTICS表
25.9 INFORMATION_SCHEMA ENGINES表
25.10 INFORMATION_SCHEMA事件表
25.11 INFORMATION_SCHEMA文件表
25.12 INFORMATION_SCHEMA KEY_COLUMN_USAGE表
25.13 INFORMATION_SCHEMA ndb_transid_mysql_connection_map表
25.14 INFORMATION_SCHEMA KEYWORDS表
25.15 INFORMATION_SCHEMA OPTIMIZER_TRACE表
25.16 INFORMATION_SCHEMA参数表
25.17 INFORMATION_SCHEMA PARTITIONS表
25.18 INFORMATION_SCHEMA PLUGINS表
25.19 INFORMATION_SCHEMA PROCESSLIST表
25.20 INFORMATION_SCHEMA概况表
25.21 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS表
25.22 INFORMATION_SCHEMA RESOURCE_GROUPS表
25.23 INFORMATION_SCHEMA ROUTINES表
25.24 INFORMATION_SCHEMA SCHEMATA表
25.25 INFORMATION_SCHEMA SCHEMA_PRIVILEGES表
25.26 INFORMATION_SCHEMA统计表
25.27 INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS表
25.28 INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS表
25.29 INFORMATION_SCHEMA ST_UNITS_OF_MEASURE表
25.30 INFORMATION_SCHEMA TABLES表
25.31 INFORMATION_SCHEMA TABLESPACES表
25.32 INFORMATION_SCHEMA TABLE_CONSTRAINTS表
25.33 INFORMATION_SCHEMA TABLE_PRIVILEGES表
25.34 INFORMATION_SCHEMA TRIGGERS表
25.35 INFORMATION_SCHEMA USER_PRIVILEGES表
25.36 INFORMATION_SCHEMA VIEWS表
25.37 INFORMATION_SCHEMA VIEW_ROUTINE_USAGE表
25.38 INFORMATION_SCHEMA VIEW_TABLE_USAGE表
25.39 INFORMATION_SCHEMA InnoDB表
25.39.1 INFORMATION_SCHEMA INNODB_BUFFER_PAGE表
25.39.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU表
25.39.3 INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS表
25.39.4 INFORMATION_SCHEMA INNODB_CACHED_INDEXES表
25.39.5 INFORMATION_SCHEMA INNODB_CMP和INNODB_CMP_RESET表
25.39.6 INFORMATION_SCHEMA INNODB_CMPMEM和INNODB_CMPMEM_RESET表
25.39.7 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表
25.39.8 INFORMATION_SCHEMA INNODB_COLUMNS表
25.39.9 INFORMATION_SCHEMA INNODB_DATAFILES表
25.39.10 INFORMATION_SCHEMA INNODB_FIELDS表
25.39.11 INFORMATION_SCHEMA INNODB_FOREIGN表
25.39.12 INFORMATION_SCHEMA INNODB_FOREIGN_COLS表
25.39.13 INFORMATION_SCHEMA INNODB_FT_BEING_DELETED表
25.39.14 INFORMATION_SCHEMA INNODB_FT_CONFIG表
25.39.15 INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD表
25.39.16 INFORMATION_SCHEMA INNODB_FT_DELETED表
25.39.17 INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE表
25.39.18 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE表
25.39.19 INFORMATION_SCHEMA INNODB_INDEXES表
25.39.20 INFORMATION_SCHEMA INNODB_LOCKS表
25.39.21 INFORMATION_SCHEMA INNODB_LOCK_WAITS表
25.39.22 INFORMATION_SCHEMA INNODB_METRICS表
25.39.23 INFORMATION_SCHEMA INNODB_SESSION_TEMP_TABLESPACES表
25.39.24 INFORMATION_SCHEMA INNODB_TABLES表
25.39.25 INFORMATION_SCHEMA INNODB_TABLESPACES表
25.39.26 INFORMATION_SCHEMA INNODB_TABLESPACES_BRIEF表
25.39.27 INFORMATION_SCHEMA INNODB_TABLESTATS查看
25.39.28 INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO表
25.39.29 INFORMATION_SCHEMA INNODB_TRX表
25.39.30 INFORMATION_SCHEMA INNODB_VIRTUAL表
25.40 INFORMATION_SCHEMA线程池表
25.40.1 INFORMATION_SCHEMA TP_THREAD_GROUP_STATE表
25.40.2 INFORMATION_SCHEMA TP_THREAD_GROUP_STATS表
25.40.3 INFORMATION_SCHEMA TP_THREAD_STATE表
25.41 INFORMATION_SCHEMA连接控制表
25.41.1 INFORMATION_SCHEMA CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS表
25.42扩展显示声明

INFORMATION_SCHEMA 提供对数据库 元数据的 访问 ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 有时用于此信息的其他术语是 数据字典 系统目录

25.1简介

INFORMATION_SCHEMA 提供对数据库 元数据的 访问 ,有关MySQL服务器的信息,例如数据库或表的名称,列的数据类型或访问权限。 有时用于此信息的其他术语是 数据字典 系统目录

INFORMATION_SCHEMA使用说明

INFORMATION_SCHEMA 是每个MySQL实例中的数据库,该实例存储有关MySQL服务器维护的所有其他数据库的信息。 INFORMATION_SCHEMA 数据库包含几个只读表。 它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您无法在它们上设置触发器。 此外,没有具有该名称的数据库目录。

虽然你可以选择 INFORMATION_SCHEMA 与一个默认的数据库 USE 语句,你只能读取表的内容,不执行 INSERT UPDATE DELETE 对他们的操作。

以下是从 INFORMATION_SCHEMA 以下位置 检索信息的语句示例

MySQL的> SELECT table_name, table_type, engine
       FROM information_schema.tables
       WHERE table_schema = 'db5'
       ORDER BY table_name;
+ ------------ + ------------ + -------- +
| table_name | table_type | 发动机|
+ ------------ + ------------ + -------- +
| fk | 基础表| InnoDB |
| fk2 | 基础表| InnoDB |
| 转到| 基础表| MyISAM |
| 进入| 基础表| MyISAM |
| k | 基础表| MyISAM |
| kurs | 基础表| MyISAM |
| 循环| 基础表| MyISAM |
| PK | 基础表| InnoDB |
| t | 基础表| MyISAM |
| t2 | 基础表| MyISAM |
| t3 | 基础表| MyISAM |
| t7 | 基础表| MyISAM |
| 表| 基础表| MyISAM |
| v | 查看| NULL |
| v2 | 查看| NULL |
| v3 | 查看| NULL |
| v56 | 查看| NULL |
+ ------------ + ------------ + -------- +
17行(0.01秒)

说明:该语句请求数据库中所有表的列表 db5 ,仅显示三条信息:表的名称,类型和存储引擎。

字符集注意事项

字符列的定义(例如, TABLES.TABLE_NAME )通常为 其中 至少64 MySQL使用的默认排序该字符集( )的所有的搜索,排序,比较和其他串上这样的列操作。 VARCHAR(N) CHARACTER SET utf8 N utf8_general_ci

由于某些MySQL对象表示为文件,因此 INFORMATION_SCHEMA 字符串列中的 搜索 可能会受到文件系统区分大小写的影响。 有关更多信息,请参见 第10.8.7节“在INFORMATION_SCHEMA搜索中使用排序规则”

INFORMATION_SCHEMA作为SHOW语句的替代

SELECT ... FROM INFORMATION_SCHEMA 语句旨在提供对 SHOW MySQL支持 的各种 语句( SHOW DATABASES SHOW TABLES 等等) 提供的信息的访问的更一致的方法 SELECT 与以下相比, 使用 具有以下优点 SHOW

  • 它符合Codd的规则,因为所有访问都是在表上完成的。

  • 您可以使用熟悉的 SELECT 语句 语法 ,只需要了解一些表名和列名。

  • 实现者无需担心添加关键字。

  • 您可以对 INFORMATION_SCHEMA 查询中 的结果进行筛选,排序,连接和转换为 应用程序所需的任何格式,例如数据结构或要解析的文本表示形式。

  • 此技术可与其他数据库系统更具互操作性。 例如,Oracle数据库用户熟悉在Oracle数据字典中查询表。

由于 SHOW 熟悉且广泛使用,这些 SHOW 陈述仍然是一种替代方案。 事实上,随着 第25.42节“扩展显示声明”中 所述 INFORMATION_SCHEMA ,还有 实现 SHOW

INFORMATION_SCHEMA和特权

每个MySQL用户都有权访问这些表,但只能看到表中与用户具有适当访问权限的对象相对应的行。 在某些情况下(例如, 表中 ROUTINE_DEFINITION INFORMATION_SCHEMA ROUTINES ),权限不足的用户可以看到 NULL 这些限制不适用于 InnoDB 表格; 只有 PROCESS 特权 才能看到它们

相同的权限适用于从 语句中 选择信息 INFORMATION_SCHEMA 和查看相同的信息 SHOW 在任何一种情况下,您都必须拥有对象的某些权限才能查看有关它的信息。

性能注意事项

INFORMATION_SCHEMA 从多个数据库中搜索信息的查询可能需要很长时间并影响性能。 要检查查询的效率,您可以使用 EXPLAIN 有关使用 EXPLAIN 输出调优 INFORMATION_SCHEMA 查询的信息,请参见 第8.2.3节“优化INFORMATION_SCHEMA查询”

标准考虑因素

INFORMATION_SCHEMA MySQL中表结构 的实现 遵循ANSI / ISO SQL:2003标准第11部分 Schemata 我们的意图是近似符合SQL:2003核心功能F021 基本信息模式

SQL Server 2000的用户(也遵循该标准)可能会注意到强烈的相似性。 但是,MySQL省略了许多与我们的实现无关的列,并添加了特定于MySQL的列。 一个这样添加的列是 表中 ENGINE INFORMATION_SCHEMA TABLES

虽然其他DBMS使用各种名称,例如 syscat system ,标准名称是 INFORMATION_SCHEMA

为避免使用标准或DB2,SQL Server或Oracle中保留的任何名称,我们更改了标记为 MySQL扩展 的某些列的名称 (例如,我们改变了 COLLATION TABLE_COLLATION TABLES 表中。)查看附近的这篇文章的结尾的保留字列表: https://web.archive.org/web/20070428032454/http://www.dbazine.com/db2 / db2-disarticles / gulutzan5

INFORMATION_SCHEMA参考章节中的约定

以下部分描述了每个表和列 INFORMATION_SCHEMA 对于每列,有三条信息:

  • INFORMATION_SCHEMA 名称 表示 INFORMATION_SCHEMA 表中 列的名称 这对应于标准SQL名称,除非 备注 字段显示 MySQL扩展名”。

  • SHOW Name 表示最近 SHOW 语句中 的等效字段名称 (如果有)。

  • 备注 提供了适用的其他信息。 如果此字段为 NULL ,则表示列的值始终为 NULL 如果此字段显示 MySQL扩展 ”,则 该列是标准SQL的MySQL扩展。

许多部分表明哪个 SHOW 语句等同于 SELECT 从中检索信息的 语句 INFORMATION_SCHEMA 对于 SHOW 在省略 子句时 显示缺省数据库信息的 语句,通常可以通过向 中检索信息的查询 子句 添加 条件来 选择缺省数据库的 信息 FROM db_name AND TABLE_SCHEMA = SCHEMA() WHERE INFORMATION_SCHEMA

相关信息

这些部分讨论了其他 INFORMATION_SCHEMA 相关主题:

25.2 INFORMATION_SCHEMA CHARACTER_SETS表

CHARACTER_SETS 表提供有关可用字符集的信息。

CHARACTER_SETS 表包含以下列:

  • CHARACTER_SET_NAME

    字符集名称。

  • DEFAULT_COLLATE_NAME

    字符集的默认排序规则。

  • DESCRIPTION

    字符集的描述。

  • MAXLEN

    存储一个字符所需的最大字节数。

笔记

SHOW CHARACTER SET 语句中 也提供了字符集信息 请参见 第13.7.6.3节“显示字符集语法” 以下陈述是等效的:

SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
  [在哪里CHARACTER_SET_NAME喜欢' wild']

显示字符集
  [LIKE' wild']

25.3 INFORMATION_SCHEMA CHECK_CONSTRAINTS表

CHECK_CONSTRAINTS 表(从MySQL 8.0.16开始提供)提供有关 CHECK 在表上定义的约束的 信息

CHECK_CONSTRAINTS 表包含以下列:

  • CONSTRAINT_CATALOG

    约束所属目录的名称。 这个值总是如此 def

  • CONSTRAINT_SCHEMA

    约束所属的模式(数据库)的名称。

  • CONSTRAINT_NAME

    约束的名称。

  • CHECK_CLAUSE

    指定约束条件的表达式。

25.4 INFORMATION_SCHEMA COLLATIONS表

COLLATIONS 表提供有关每个字符集的排序规则的信息。

COLLATIONS 表包含以下列:

  • COLLATION_NAME

    整理名称。

  • CHARACTER_SET_NAME

    与排序规则关联的字符集的名称。

  • ID

    整理ID。

  • IS_DEFAULT

    排序规则是否为其字符集的默认值。

  • IS_COMPILED

    字符集是否编译到服务器中。

  • SORTLEN

    这与对字符集中表示的字符串进行排序所需的内存量有关。

  • PAD_ATTRIBUTE

    整理垫属性。

笔记

归类信息也可从 SHOW COLLATION 声明中获得。 请参见 第13.7.6.4节“SHOW COLLATION语法” 以下陈述是等效的:

从INFORMATION_SCHEMA.COLLATIONS中选择COLLATION_NAME
  [COLLERE_NAME LIKE' wild']

显示收集
  [LIKE' wild']

25.5 INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY表

COLLATION_CHARACTER_SET_APPLICABILITY 表指示哪种字符集适用于哪种排序规则。

COLLATION_CHARACTER_SET_APPLICABILITY 表包含以下列:

  • COLLATION_NAME

    整理名称。

  • CHARACTER_SET_NAME

    与排序规则关联的字符集的名称。

笔记

这些 COLLATION_CHARACTER_SET_APPLICABILITY 列等同于 SHOW COLLATION 语句 显示的前两列

25.6 INFORMATION_SCHEMA列表

COLUMNS 表提供有关表中列的信息。 相关 ST_GEOMETRY_COLUMNS 表提供有关存储空间数据的表列的信息。 请参见 第25.27节“INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS表”

COLUMNS 表包含以下列:

  • TABLE_CATALOG

    包含该列的表所属的目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    包含列的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含该列的表的名称。

  • COLUMN_NAME

    列的名称。

  • ORDINAL_POSITION

    表中列的位置。 ORDINAL_POSITION 是必要的,因为你可能想说 ORDER BY ORDINAL_POSITION 不同 SHOW COLUMNS SELECT COLUMNS 表中没有自动排序。

  • COLUMN_DEFAULT

    列的默认值。 这是 NULL 因为列具有显式默认值 NULL ,或者列定义包含无 DEFAULT 子句。

  • IS_NULLABLE

    列可空性。 该值 YES 是否 NULL 可以将值存储在列中, NO 如果不存在。

  • DATA_TYPE

    列数据类型。

    DATA_TYPE 值只是类型名称,没有其他信息。 COLUMN_TYPE 值包含类型名称以及可能的其他信息,例如精度或长度。

  • CHARACTER_MAXIMUM_LENGTH

    对于字符串列,最大长度(以字符为单位)。

  • CHARACTER_OCTET_LENGTH

    对于字符串列,最大长度(以字节为单位)。

  • NUMERIC_PRECISION

    对于数字列,数字精度。

  • NUMERIC_SCALE

    对于数字列,数字刻度。

  • DATETIME_PRECISION

    对于时间列,小数秒精度。

  • CHARACTER_SET_NAME

    对于字符串列,字符集名称。

  • COLLATION_NAME

    对于字符串列,排序规则名称。

  • COLUMN_TYPE

    列数据类型。

    DATA_TYPE 值只是类型名称,没有其他信息。 COLUMN_TYPE 值包含类型名称以及可能的其他信息,例如精度或长度。

  • COLUMN_KEY

    列是否已编入索引:

    • 如果 COLUMN_KEY 为空,则列不会被索引,也不会仅作为多列非唯一索引中的辅助列索引。

    • 如果 COLUMN_KEY PRI ,则列是a PRIMARY KEY 或多列中的列之一 PRIMARY KEY

    • 如果 COLUMN_KEY UNI ,则列是 UNIQUE 索引 的第一列 UNIQUE 索引允许多个 NULL 值,但您可以 NULL 通过检查 Null 来判断列是否允许 。)

    • 如果 COLUMN_KEY MUL ,则该列是非唯一索引的第一列,其中在列中允许多次出现给定值。

    如果超过一个 COLUMN_KEY 值适用于表中给定的列, COLUMN_KEY 显示了一个具有最高优先级,顺序 PRI UNI MUL

    UNIQUE 索引可被显示为 PRI ,如果它不能包含 NULL 值并没有 PRIMARY KEY 在表中。 UNIQUE 索引可能会显示为 MUL 如果若干列形成复合 UNIQUE 索引; 虽然列的组合是唯一的,但每列仍然可以保存给定值的多次出现。

  • EXTRA

    有关给定列的任何其他可用信息。 在这些情况下,该值是非空的:

    • auto_increment 对于具有该 AUTO_INCREMENT 属性的

    • on update CURRENT_TIMESTAMP for TIMESTAMP DATETIME 具有该 ON UPDATE CURRENT_TIMESTAMP 属性的

    • VIRTUAL GENERATED 或者 VIRTUAL STORED 用于生成的列。

    • DEFAULT_GENERATED 对于具有表达式默认值的列。

  • PRIVILEGES

    您对该列的权限。

  • COLUMN_COMMENT

    列定义中包含的任何注释。

  • GENERATION_EXPRESSION

    对于生成的列,显示用于计算列值的表达式。 为非生成列清空。 有关生成的列的信息,请参见 第13.1.20.9节“创建表和生成的列”

  • SRS_ID

    此值适用于空间列。 它包含列 SRID 值,指示存储在 列中的 值的空间参照系。 请参见 第11.5.1节“空间数据类型” 第11.5.5节“空间参考系统支持” 该值适用 NULL 于非空间列和没有 SRID 属性的 空间列

笔记

  • SHOW COLUMNS Type 显示包括来自几个不同 COLUMNS 列的

  • CHARACTER_OCTET_LENGTH 应该是相同的 CHARACTER_MAXIMUM_LENGTH ,除了多字节字符集。

  • CHARACTER_SET_NAME 可以源自 COLLATION_NAME 例如,如果你说 SHOW FULL COLUMNS FROM t ,并且你在 COLLATION_NAME 列中 看到 一个值 utf8_swedish_ci ,那么字符集就是第一个下划线之前: utf8

SHOW COLUMNS 声明 也可从 声明中获得。 请参见 第13.7.6.5节“显示列语法” 以下陈述几乎相同:

SELECT COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT
  来自INFORMATION_SCHEMA.COLUMNS
  WHERE table_name =' tbl_name'
  [AND table_schema =' db_name']
  [AND column_name LIKE' wild']

显示列
  来自tbl_name
  [FROM db_name]
  [LIKE' wild']

25.7 INFORMATION_SCHEMA COLUMN_PRIVILEGES表

COLUMN_PRIVILEGES 表提供有关列权限的信息。 它从 mysql.columns_priv 系统表中 获取其值

COLUMN_PRIVILEGES 表包含以下列:

  • GRANTEE

    授予权限的帐户的名称, 格式为。 'user_name'@'host_name'

  • TABLE_CATALOG

    包含该列的表所属的目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    包含列的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含该列的表的名称。

  • COLUMN_NAME

    列的名称。

  • PRIVILEGE_TYPE

    授予的特权。 该值可以是可以在列级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 每行列出一个权限,因此被授权者拥有每列权限一行。

    在输出 SHOW FULL COLUMNS 中,例如,权限都在一列和小写中 select,insert,update,references COLUMN_PRIVILEGES ,每行有一个特权,大写。

  • IS_GRANTABLE

    YES 如果用户有 GRANT OPTION 权限, NO 否则。 输出未 GRANT OPTION 列为单独的行 PRIVILEGE_TYPE='GRANT OPTION'

笔记

以下陈述 相同:

SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES

显示奖学金......

25.8 INFORMATION_SCHEMA COLUMN_STATISTICS表

COLUMN_STATISTICS 表提供对列值的直方图统计信息的访问。

有关直方图统计信息,请参见 第8.9.6节“优化程序统计信息” 第13.7.3.1节“分析表语法”

您只能查看您拥有某些权限的列的信息。

COLUMN_STATISTICS 表包含以下列:

  • SCHEMA_NAME

    统计信息适用的架构的名称。

  • TABLE_NAME

    统计信息适用的列的名称。

  • COLUMN_NAME

    统计信息适用的列的名称。

  • HISTOGRAM

    JSON 描述列统计对象,存储为直方图。

25.9 INFORMATION_SCHEMA ENGINES表

ENGINES 表提供有关存储引擎的信息。 这对于检查是否支持存储引擎或查看默认引擎是什么特别有用。

ENGINES 表包含以下列:

  • ENGINE

    存储引擎的名称。

  • SUPPORT

    服务器对存储引擎的支持级别,如下表所示。

    含义
    YES 引擎受支持且处于活动状态
    DEFAULT 比如 YES ,加上这是默认引擎
    NO 不支持引擎
    DISABLED 引擎受支持但已被禁用

    NO 意味着在不支持引擎的情况下编译服务器,因此无法在运行时启用它。

    DISABLED 发生 的值 可能是因为服务器是使用禁用引擎的选项启动的,或者因为并未提供启用它所需的所有选项。 在后一种情况下,错误日志应包含指示禁用该选项的原因。 请参见 第5.4.2节“错误日志”

    您可能还会看到 DISABLED 存储引擎,如果服务器已编译为支持它,但是启动了一个 选项。 对于 存储引擎, 表示服务器是在支持NDB Cluster的情况下编译的,但未使用该 选项 启动 --skip-engine_name NDB DISABLED --ndbcluster

    所有MySQL服务器都支持 MyISAM 表。 无法禁用 MyISAM

  • COMMENT

    存储引擎的简要说明。

  • TRANSACTIONS

    存储引擎是否支持事务。

  • XA

    存储引擎是否支持XA事务。

  • SAVEPOINTS

    存储引擎是否支持保存点。

笔记

  • ENGINES 表是一个非标准 INFORMATION_SCHEMA 表。

存储引擎信息也可从 SHOW ENGINES 声明中获得。 请参见 第13.7.6.16节“显示发动机语法” 以下陈述是等效的:

SELECT * FROM INFORMATION_SCHEMA.ENGINES

显示发动机

25.10 INFORMATION_SCHEMA事件表

EVENTS 表提供有关事件管理器事件的信息,这将在 第24.4节“使用事件调度程序”中讨论

EVENTS 表包含以下列:

  • EVENT_CATALOG

    事件所属目录的名称。 这个值总是如此 def

  • EVENT_SCHEMA

    事件所属的架构(数据库)的名称。

  • EVENT_NAME

    事件的名称。

  • DEFINER

    格式 创建事件的用户的帐户 'user_name'@'host_name'

  • TIME_ZONE

    事件时区,用于调度事件的时区,在执行时在事件中生效。 默认值为 SYSTEM

  • EVENT_BODY

    用于事件 DO 子句中 语句的语言 价值总是如此 SQL

  • EVENT_DEFINITION

    构成事件 DO 子句 的SQL语句的文本 ; 换句话说,这个事件执行的语句。

  • EVENT_TYPE

    事件重复类型, ONE TIME (瞬态)或 RECURRING (重复)。

  • EXECUTE_AT

    对于一次性事件,这是在 用于创建事件 语句 DATETIME AT 子句中 指定 CREATE EVENT ,或者 ALTER EVENT 是修改事件 的最后一个 语句中 指定 此列中显示的值反映 INTERVAL 了事件 AT 子句中 包含 的任何 的加或减 例如,如果使用创建事件 ON SCHEDULE AT CURRENT_TIMESTAMP + '1:6' DAY_HOUR ,并且事件是在2018-02-09 14:05:30创建的,则此列中显示的值将为 '2018-02-10 20:05:30' 如果事件的时间由 EVERY 子句而不是 AT 子句确定(即,如果事件是重复出现的话),则此列的值为 NULL

  • INTERVAL_VALUE

    对于重复事件,在事件执行之间等待的间隔数。 对于瞬态事件,值始终为 NULL

  • INTERVAL_FIELD

    用于重复事件在重复之前等待的间隔的时间单位。 对于瞬态事件,值始终为 NULL

  • SQL_MODE

    创建或更改事件时生效的SQL模式,以及执行事件的情况。 有关允许的值,请参见 第5.1.11节“服务器SQL模式”

  • STARTS

    重复活动的开始日期和时间。 这将显示为 DATETIME 值, NULL 如果没有为事件定义开始日期和时间 则显示该 对于瞬态事件,此列始终为 NULL 对于定义包含 STARTS 子句 的定期事件 ,此列包含相应的 DATETIME 值。 EXECUTE_AT 列一样,此值可解析所使用的任何表达式。 如果没有 STARTS 影响事件发生时间的条款,则此列为 NULL

  • ENDS

    对于定义包含 ENDS 子句 的定期事件 ,此列包含相应的 DATETIME 值。 EXECUTE_AT 列一样,此值可解析所使用的任何表达式。 如果没有 ENDS 影响事件发生时间的条款,则此列为 NULL

  • STATUS

    事件状态。 其中一个 ENABLED DISABLED SLAVESIDE_DISABLED SLAVESIDE_DISABLED 表示事件的创建发生在充当复制主服务器的另一个MySQL服务器上并复制到充当从服务器的当前MySQL服务器,但该事件当前未在从服务器上执行。 有关更多信息,请参见 第17.4.1.16节“调用调用的功能” 信息。

  • ON_COMPLETION

    两个值之一 PRESERVE NOT PRESERVE

  • CREATED

    事件创建的日期和时间。 这是一个 TIMESTAMP 价值。

  • LAST_ALTERED

    上次修改事件的日期和时间。 这是一个 TIMESTAMP 价值。 如果事件自创建以来未被修改,则此值与 CREATED 相同

  • LAST_EXECUTED

    事件上次执行的日期和时间。 这是一个 DATETIME 价值。 如果事件从未执行过,则此列为 NULL

    LAST_EXECUTED 表示事件何时开始。 因此,该 ENDS 列永远不会少于 LAST_EXECUTED

  • EVENT_COMMENT

    评论的文本,如果事件有一个。 如果不是,则该值为空。

  • ORIGINATOR

    创建事件的MySQL服务器的服务器ID; 用于复制。 ALTER EVENT 如果在主服务器上执行,则 可以将该值更新 为发生该语句的服务器的服务器ID。 默认值为0。

  • CHARACTER_SET_CLIENT

    character_set_client 创建事件时系统变量 的会话值

  • COLLATION_CONNECTION

    collation_connection 创建事件时系统变量 的会话值

  • DATABASE_COLLATION

    与事件关联的数据库的排序规则。

笔记

假设用户 'jon'@'ghidora' 创建了一个名为的事件 e_daily ,然后在几分钟后使用 ALTER EVENT 语句 对其进行修改 ,如下所示:

DELIMITER |

创造事件e_daily
    按照时间表
      每一天
    评论'保存会话总数,然后每天清理表'
      开始
        INSERT INTO site_activity.totals(时间,总计)
          SELECT CURRENT_TIMESTAMP,COUNT(*)
            来自site_activity.sessions;
        从site_activity.sessions中删除;
      结束|

DELIMITER;

改变事件e_daily
    ENABLE;

(请注意,注释可以跨越多行。)

然后,该用户可以运行以下 SELECT 语句,并获得显示的输出:

MySQL的> SELECT * FROM INFORMATION_SCHEMA.EVENTS
       WHERE EVENT_NAME = 'e_daily'
       AND EVENT_SCHEMA = 'myschema'\G
*************************** 1。排******************** *******
       EVENT_CATALOG:def
        EVENT_SCHEMA:myschema
          EVENT_NAME:e_daily
             DEFINER:jon @ ghidora
           TIME_ZONE:系统
          EVENT_BODY:SQL
    EVENT_DEFINITION:开始
        INSERT INTO site_activity.totals(时间,总计)
          SELECT CURRENT_TIMESTAMP,COUNT(*)
            来自site_activity.sessions;
        从site_activity.sessions中删除;
      结束
          EVENT_TYPE:RECURRING
          EXECUTE_AT:NULL
      INTERVAL_VALUE:1
      INTERVAL_FIELD:DAY
            SQL_MODE:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
                      NO_ZERO_IN_DATE,NO_ZERO_DATE,
                      ERROR_FOR_DIVISION_BY_ZERO,
                      NO_ENGINE_SUBSTITUTION
              开始时间:2018-08-08 11:06:34
                ENDS:NULL
              状态:已启用
       ON_COMPLETION:NOT PRESERVE
             创建时间:2018-08-08 11:06:34
        LAST_ALTERED:2018-08-08 11:06:34
       LAST_EXECUTED:2018-08-08 16:06:34
       EVENT_COMMENT:保存会话总数,然后清除
                      每天一桌
          原始人:1
CHARACTER_SET_CLIENT:utf8mb4
COLLATION_CONNECTION:utf8mb4_0900_ai_ci
  DATABASE_COLLATION:utf8mb4_0900_ai_ci

活动信息也可从 SHOW EVENTS 声明中获得。 请参见 第13.7.6.18节“显示事件语法” 以下陈述是等效的:

选择
    EVENT_SCHEMA,EVENT_NAME,DEFINER,TIME_ZONE,EVENT_TYPE,EXECUTE_AT,
    INTERVAL_VALUE,INTERVAL_FIELD,STARTS,ENDS,STATUS,ORIGINATOR,
    CHARACTER_SET_CLIENT,COLLATION_CONNECTION,DATABASE_COLLATION
  来自INFORMATION_SCHEMA.EVENTS
  WHERE table_schema =' db_name'
  [AND column_name LIKE' wild']

展示活动
  [FROM db_name]
  [LIKE' wild']

25.11 INFORMATION_SCHEMA文件表

FILES 表提供有关存储MySQL表空间数据的文件的信息。

FILES 表提供有关 InnoDB 数据文件的 信息 在NDB Cluster中,此表还提供有关存储NDB Cluster Disk Data表的文件的信息。 有关特定的其他信息 InnoDB ,请参阅 本节后面的 InnoDB Notes ; 有关NDB Cluster的其他信息,请参阅 NDB Notes

FILES 表包含以下列:

  • FILE_ID

    对于 InnoDB :表空间ID,也称为 space_id fil_space_t::id

    用于 NDB :文件标识符。 FILE_ID 列值是自动生成的。

  • FILE_NAME

    对于 InnoDB :数据文件的名称。 每个表的 .ibd 文件 和一般表空间具有 文件扩展名。 撤消表空间以前缀为前缀 undo 系统表空间以前缀为前缀 ibdata 全局临时表空间以前缀为前缀 ibtmp 文件名包括文件路径,该路径可能与MySQL数据目录相关( datadir 系统变量 的值 )。

    用于 NDB UNDO CREATE LOGFILE GROUP 创建 日志文件 的名称 ALTER LOGFILE GROUP ,或由 CREATE TABLESPACE 创建的数据文件创建 日志文件 的名称 ALTER TABLESPACE

  • FILE_TYPE

    对于 InnoDB :表空间文件类型。 文件有三种可能的文件类型 InnoDB TABLESPACE 是包含表,索引或其他形式的用户数据的任何系统,常规或每表文件表空间文件的文件类型。 TEMPORARY 是临时表空间的文件类型。 UNDO LOG 是undo tablespaces的文件类型,用于保存undo记录。

    对于 NDB :值之一 UNDO LOG DATAFILE TABLESPACE

  • TABLESPACE_NAME

    用于 InnoDB :表空间的SQL名称。 通用表空间名称是 SYS_TABLESPACES.NAME 值。 对于其他表空间文件,名称以开始 innodb_ ,如 innodb_system innodb_undo innodb_file_per_table 每个表的表空间名称格式是 表空间ID 在哪里 innodb_file_per_table_## ##

    用于 NDB :与文件关联的表空间的名称。

  • TABLE_CATALOG

    此值始终为空。

  • TABLE_SCHEMA

    这个值总是如此 NULL

  • TABLE_NAME

    对于 InnoDB :此值始终为 NULL

    用于 NDB :与文件关联的磁盘数据表的名称(如果有)。

  • LOGFILE_GROUP_NAME

    对于 InnoDB :此值始终为 NULL

    用于 NDB :日志文件或数据文件所属的日志文件组的名称。

  • LOGFILE_GROUP_NUMBER

    对于 InnoDB :此值始终为 NULL

    对于 NDB UNDO 日志文件,日志文件所属的日志文件组的自动生成的ID号。

  • ENGINE

    对于 InnoDB :此值始终为 InnoDB

    对于 NDB :对于NDB群集磁盘数据日志文件或数据文件,此值始终为 NDB NDBCLUSTER

  • FULLTEXT_KEYS

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB群集磁盘数据日志文件或数据文件,此值始终为空。

  • DELETED_ROWS

    对于 InnoDB :此值始终为 NULL

  • UPDATE_COUNT

    对于 InnoDB :此值始终为 NULL

  • FREE_EXTENTS

    对于 InnoDB :当前数据文件中完全空闲的区数。

    对于 NDB :文件尚未使用的范围数。

  • TOTAL_EXTENTS

    对于 InnoDB :当前数据文件中使用的完整范围的数量。 文件末尾的任何部分范围都不计算在内。

    对于 NDB :分配给文件的扩展区总数。

  • EXTENT_SIZE

    对于 InnoDB :对于具有4KB,8KB或16KB页面大小的文件,扩展区大小为1048576(1MB)。 对于页面大小为32KB的文件,范围大小为2097152字节(2MB),对于页面大小为64KB的文件,范围大小为4194304(4MB)。 FILES 不报告 InnoDB 页面大小。 页面大小由 innodb_page_size 系统变量 定义 也可以从 INNODB_TABLESPACES 表中 检索范围大小信息 FILES.FILE_ID = INNODB_TABLESPACES.SPACE

    对于 NDB :文件范围的大小(以字节为单位)。

  • INITIAL_SIZE

    对于 InnoDB :文件的初始大小(以字节为单位)。

    对于 NDB :文件的大小(以字节为单位)。 这是已在使用的值相同 INITIAL_SIZE 的条款 CREATE LOGFILE GROUP ALTER LOGFILE GROUP CREATE TABLESPACE ALTER TABLESPACE 用来创建该文件的语句。

  • MAXIMUM_SIZE

    用于 InnoDB :文件中允许的最大字节数。 该值适用 NULL 于除预定义系统表空间数据文件之外的所有数据文件。 最大系统表空间文件大小由 innodb_data_file_path 最大全局临时表空间文件大小由 innodb_temp_data_file_path NULL 对于预定义的系统表空间的数据文件值指示一个文件大小限制没有被明确定义。

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终与 INITIAL_SIZE 相同

  • AUTOEXTEND_SIZE

    对于 InnoDB AUTOEXTEND_SIZE 是由 innodb_data_file_path 系统表空间或 innodb_temp_data_file_path 全局临时表空间 定义的自动扩展大小

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为空。

  • CREATION_TIME

    对于 InnoDB :此值始终为 NULL

    用于 NDB :创建文件的日期和时间。

  • LAST_UPDATE_TIME

    对于 InnoDB :此值始终为 NULL

    用于 NDB :上次修改文件的日期和时间。

  • LAST_ACCESS_TIME

    对于 InnoDB :此值始终为 NULL

    用于 NDB :服务器上次访问文件的日期和时间。

  • RECOVER_TIME

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 0

  • TRANSACTION_COUNTER

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 0

  • VERSION

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • ROW_FORMAT

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • TABLE_ROWS

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • AVG_ROW_LENGTH

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • DATA_LENGTH

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • MAX_DATA_LENGTH

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • INDEX_LENGTH

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • DATA_FREE

    对于 InnoDB :整个表空间的可用空间总量(以字节为单位)。 预定义的系统表空间(包括系统表空间和临时表表空间)可能包含一个或多个数据文件。

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • CREATE_TIME

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • UPDATE_TIME

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • CHECK_TIME

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • CHECKSUM

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NULL

  • STATUS

    对于 InnoDB :此值是 NORMAL 默认值。 InnoDB 每个表的文件表空间可能会报告 IMPORTING ,这表示表空间尚不可用。

    对于 NDB :对于NDB Cluster Disk Data文件,此值始终为 NORMAL

  • EXTRA

    对于 InnoDB :此值始终为 NULL

    对于 NDB :对于NDB Cluster Disk Data文件,该 EXTRA 列显示文件所属的数据节点(每个数据节点都有自己的副本),以及其撤消缓冲区的大小。 假设您在具有四个数据节点的NDB群集上使用此语句:

    创建LOGFILE GROUP mygroup
        添加UNDOFILE'new_undo.dat'
        INITIAL_SIZE 2G
        ENGINE NDB;
    

    CREATE LOGFILE GROUP 成功 运行 语句 ,您应该看到类似于此处针对该 FILES 表的 查询所示的结果

    MySQL的> SELECT LOGFILE_GROUP_NAME, FILE_TYPE, EXTRA
             FROM INFORMATION_SCHEMA.FILES
             WHERE FILE_NAME = 'new_undo.dat';
    
    + -------------------- + ----------- + ---------------- ------------------------- +
    | LOGFILE_GROUP_NAME | FILE_TYPE | 额外|
    + -------------------- + ----------- + ---------------- ------------------------- +
    | mygroup | UNDO LOG | CLUSTER_NODE = 5; UNDO_BUFFER_SIZE = 8388608 |
    | mygroup | UNDO LOG | CLUSTER_NODE = 6; UNDO_BUFFER_SIZE = 8388608 |
    | mygroup | UNDO LOG | CLUSTER_NODE = 7; UNDO_BUFFER_SIZE = 8388608 |
    | mygroup | UNDO LOG | CLUSTER_NODE = 8; UNDO_BUFFER_SIZE = 8388608 |
    + -------------------- + ----------- + ---------------- ------------------------- +
    

    此信息未包含在NDB 8.0.15之前的NDB Cluster 8.0中。 (Bug#92796,Bug#28800252)

笔记

  • FILES 表是一个非标准 INFORMATION_SCHEMA 表。

InnoDB备注

以下说明适用于 InnoDB 数据文件。

  • 报告的数据 FILES 是从 InnoDB 打开文件的内存缓存中 报告的 相比之下, INNODB_DATAFILES 报告来自 InnoDB SYS_DATAFILES 内部数据字典表的数据。

  • 报告的数据 FILES 包括全局临时表空间数据。 此数据在 InnoDB SYS_DATAFILES 内部数据字典表中 不可用, 因此不会报告 INNODB_DATAFILES

  • 撤消表空间数据是 FILES 在存在单独的撤消表空间时 报告的 ,默认情况下它们在MySQL 8.0中

  • 以下查询返回与 InnoDB 表空间 相关的所有数据

    选择
      FILE_ID,FILE_NAME,FILE_TYPE,TABLESPACE_NAME,FREE_EXTENTS,
      TOTAL_EXTENTS,EXTENT_SIZE,INITIAL_SIZE,MAXIMUM_SIZE,
      AUTOEXTEND_SIZE,DATA_FREE,STATUS
    FROM INFORMATION_SCHEMA.FILES WHERE ENGINE ='InnoDB'\ G
    

NDB笔记

  • FILES 表仅提供有关磁盘数据 文件的 信息 ; 您无法使用它来确定单个 NDB 表的 磁盘空间分配或可用性 但是,可以看到为 NDB 磁盘上存储数据的 每个 分配了多少空间 - 以及使用 ndb_desc 为该表存储磁盘数据的可用空间 有关更多信息,请参见 第22.4.9节“ ndb_desc - 描述NDB表”

  • CREATION_TIME LAST_UPDATE_TIME LAST_ACCESSED 值是所报告的操作系统,并不由所提供的 NDB 存储引擎。 如果操作系统未提供任何值,则显示这些列 0000-00-00 00:00:00

  • TOTAL EXTENTS FREE_EXTENTS 之间的区别 是文件当前使用的区数:

    SELECT TOTAL_EXTENTS  -  FREE_EXTENTS AS extents_used
        来自INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME ='myfile.dat';
    

    要估计文件使用的磁盘空间量,请将该差值乘以 EXTENT_SIZE 的值,该值 以字节为单位给出文件范围的大小:

    SELECT(TOTAL_EXTENTS  -  FREE_EXTENTS)* EXTENT_SIZE AS bytes_used
        来自INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME ='myfile.dat';
    

    同样,您可以通过乘以 FREE_EXTENTS 以下 方法估算给定文件中可用的空间量 EXTENT_SIZE

    SELECT FREE_EXTENTS * EXTENT_SIZE AS bytes_free
        来自INFORMATION_SCHEMA.FILES
        WHERE FILE_NAME ='myfile.dat';
    
    重要

    前面的查询产生的字节值只是近似值,它们的精度与值的成反比 EXTENT_SIZE 也就是说,越大 EXTENT_SIZE ,近似值越不准确。

    同样重要的是要记住,一旦使用了一个扩展区,就不能在不删除它所属的数据文件的情况下再次释放它。 这意味着从磁盘数据表中删除 不会 释放磁盘空间。

    范围大小可以在 CREATE TABLESPACE 语句中 设置 有关更多信息,请参见 第13.1.21节“CREATE TABLESPACE语法”

  • FILES 在创建日志文件组之后,表中 存在另一行 此行包含 NULL 的值 FILE_NAME 对于此行, FILE_ID 的值 始终 0 的值 始终 FILE_TYPE UNDO FILE STATUS 列的值始终为 NORMAL ENGINE 的值 始终为 NDBCLUSTER

    FREE_EXTENTS 此行中列显示的提供给所有的自由程度总数撤消属于其名称和编号显示在一个给定的日志文件组文件 LOGFILE_GROUP_NAME ,并 LOGFILE_GROUP_NUMBER 分别列。

    假设您的NDB群集上没有现有的日志文件组,并使用以下语句创建一个:

    MySQL的> CREATE LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile.dat'
             INITIAL_SIZE = 16M
             UNDO_BUFFER_SIZE = 1M
             ENGINE = NDB;
    

    现在,您可以 NULL 在查询 FILES 看到此

    MySQL的> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    + -------------- + --------- + --------- + ------ + ------- --- +
    | 档案| 免费| 总计| 尺寸| 初始|
    + -------------- + --------- + --------- + ------ + ------- --- +
    | undofile.dat | NULL | 4194304 | 4 | 16777216 |
    | NULL | 4184068 | NULL | 4 | NULL |
    + -------------- + --------- + --------- + ------ + ------- --- +
    

    TOTAL_EXTENTS 由于维护撤消文件所需的开销, 可用于撤消日志记录的可用扩展区总数总是略小于 日志文件组中所有撤消文件 列值 之和 通过向日志文件组添加第二个撤消文件,然后针对该 FILES 重复上一个查询,可以看到这一点

    MySQL的> ALTER LOGFILE GROUP lg1
             ADD UNDOFILE 'undofile02.dat'
             INITIAL_SIZE = 4M
             ENGINE = NDB;
    
    MySQL的> SELECT DISTINCT
             FILE_NAME AS File,
             FREE_EXTENTS AS Free,
             TOTAL_EXTENTS AS Total,
             EXTENT_SIZE AS Size,
             INITIAL_SIZE AS Initial
             FROM INFORMATION_SCHEMA.FILES;
    + ---------------- + --------- + --------- + ------ + ----- ----- +
    | 档案| 免费| 总计| 尺寸| 初始|
    + ---------------- + --------- + --------- + ------ + ----- ----- +
    | undofile.dat | NULL | 4194304 | 4 | 16777216 |
    | undofile02.dat | NULL | 1048576 | 4 | 4194304 |
    | NULL | 5223944 | NULL | 4 | NULL |
    + ---------------- + --------- + --------- + ------ + ----- ----- +
    

    使用此日志文件组的磁盘数据表可用于撤消日志记录的可用空间量(以字节为单位)可以通过将可用扩展区的数量乘以初始大小来近似:

    MySQL的> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    + -------------- + ------------ +
    | 自由范围| 免费字节|
    + -------------- + ------------ +
    | 5223944 | 20895776 |
    + -------------- + ------------ +
    

    如果您创建NDB群集磁盘数据表,然后在其中插入一些行,您可以看到之后大约有多少空间用于撤消日志记录,例如:

    MySQL的> CREATE TABLESPACE ts1
             ADD DATAFILE 'data1.dat'
             USE LOGFILE GROUP lg1
             INITIAL_SIZE 512M
             ENGINE = NDB;
    
    MySQL的> CREATE TABLE dd (
             c1 INT NOT NULL PRIMARY KEY,
             c2 INT,
             c3 DATE
             )
             TABLESPACE ts1 STORAGE DISK
             ENGINE = NDB;
    
    MySQL的> INSERT INTO dd VALUES
             (NULL, 1234567890, '2007-02-02'),
             (NULL, 1126789005, '2007-02-03'),
             (NULL, 1357924680, '2007-02-04'),
             (NULL, 1642097531, '2007-02-05');
    
    MySQL的> SELECT
             FREE_EXTENTS AS 'Free Extents',
             FREE_EXTENTS * EXTENT_SIZE AS 'Free Bytes'
             FROM INFORMATION_SCHEMA.FILES
             WHERE LOGFILE_GROUP_NAME = 'lg1'
             AND FILE_NAME IS NULL;
    + -------------- + ------------ +
    | 自由范围| 免费字节|
    + -------------- + ------------ +
    | 5207565 | 20830260 |
    + -------------- + ------------ +
    
  • FILES 无论是否有任何数据文件与表空间相关联,表中 都会存在 任何NDB Cluster表空间 的附加行 此行包含 NULL 的值 FILE_NAME 对于此行, FILE_ID 的值 始终 0 的值 始终 FILE_TYPE TABLESPACE STATUS 列的值始终为 NORMAL ENGINE 的值 始终为 NDBCLUSTER

  • 有关其他信息以及创建和删除NDB Cluster Disk Data对象的示例,请参见 第22.5.13节“NDB Cluster Disk Data Tables”

25.12 INFORMATION_SCHEMA KEY_COLUMN_USAGE表

KEY_COLUMN_USAGE 表描述了哪些键列具有约束。 此表未提供有关功能键部件的信息,因为它们是表达式,表仅提供有关列的信息。

KEY_COLUMN_USAGE 表包含以下列:

  • CONSTRAINT_CATALOG

    约束所属目录的名称。 这个值总是如此 def

  • CONSTRAINT_SCHEMA

    约束所属的模式(数据库)的名称。

  • CONSTRAINT_NAME

    约束的名称。

  • TABLE_CATALOG

    表所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    具有约束的表的名称。

  • COLUMN_NAME

    具有约束的列的名称。

    如果约束是外键,则这是外键的列,而不是外键引用的列。

  • ORDINAL_POSITION

    列在约束内的位置,而不是列在表中的位置。 列位置从1开始编号。

  • POSITION_IN_UNIQUE_CONSTRAINT

    NULL 对于唯一和主键约束。 对于外键约束,此列是正在引用的表的键中的序号位置。

  • REFERENCED_TABLE_SCHEMA

    约束引用的模式的名称。

  • REFERENCED_TABLE_NAME

    约束引用的表的名称。

  • REFERENCED_COLUMN_NAME

    约束引用的列的名称。

假设有两个表名 t1 t3 并且具有以下定义:

CREATE TABLE t1
    s1 INT,
    s2 INT,
    s3 INT,
    主要关键(第3节)
)ENGINE = InnoDB;

CREATE TABLE t3
    s1 INT,
    s2 INT,
    s3 INT,
    KEY(S1),
    约束CO FOREIGN KEY(第2条)参考文献t1(s3)
)ENGINE = InnoDB;

对于这两个表,该 KEY_COLUMN_USAGE 表有两行:

  • 一行 CONSTRAINT_NAME = 'PRIMARY' TABLE_NAME = 't1' COLUMN_NAME = 's3' ORDINAL_POSITION = 1 POSITION_IN_UNIQUE_CONSTRAINT = NULL

    对于 NDB :此值始终为 NULL

  • 一行 CONSTRAINT_NAME = 'CO' TABLE_NAME = 't3' COLUMN_NAME = 's2' ORDINAL_POSITION = 1 POSITION_IN_UNIQUE_CONSTRAINT = 1

25.13 INFORMATION_SCHEMA ndb_transid_mysql_connection_map表

ndb_transid_mysql_connection_map 表提供了 作为API节点连接到NDB Cluster的 NDB 事务, NDB 事务协调器和MySQL服务器 之间的映射 在填充 NDB群集信息数据库 server_operations server_transactions 时使用此信息 ndbinfo

INFORMATION_SCHEMA 名称 SHOW 名称 备注
mysql_connection_id MySQL服务器连接ID
node_id 事务协调器节点ID
ndb_transid NDB 交易ID

mysql_connection_id 与输出中显示的连接或会话ID相同 SHOW PROCESSLIST

没有 SHOW 与此表关联的语句。

这是一个非标准表,特定于NDB Cluster。 它作为 INFORMATION_SCHEMA 插件 实现 ; 您可以通过检查输出来验证它是否受支持 SHOW PLUGINS 如果 ndb_transid_mysql_connection_map 启用了支持,则此语句的输出包括具有此名称,类型 INFORMATION SCHEMA 和状态 的插件,如此处 ACTIVE 所示(使用强调文本):

MySQL的> SHOW PLUGINS;
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
| 名称| 状态| 输入| 图书馆| 许可证|
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
| binlog | ACTIVE | 存储引擎| NULL | GPL |
| mysql_native_password | ACTIVE | 认证| NULL | GPL |
| CSV | ACTIVE | 存储引擎| NULL | GPL |
| 记忆| ACTIVE | 存储引擎| NULL | GPL |
| MRG_MYISAM | ACTIVE | 存储引擎| NULL | GPL |
| MyISAM | ACTIVE | 存储引擎| NULL | GPL |
| PERFORMANCE_SCHEMA | ACTIVE | 存储引擎| NULL | GPL |
| BLACKHOLE | ACTIVE | 存储引擎| NULL | GPL |
| 存档| ACTIVE | 存储引擎| NULL | GPL |
| ndbcluster | ACTIVE | 存储引擎| NULL | GPL |
| ndbinfo | ACTIVE | 存储引擎| NULL | GPL |
| ndb_transid_mysql_connection_map | ACTIVE | 信息模式| NULL | GPL |
| InnoDB | ACTIVE | 存储引擎| NULL | GPL |
| INNODB_TRX | ACTIVE | 信息模式| NULL | GPL |
| INNODB_LOCKS | ACTIVE | 信息模式| NULL | GPL |
| INNODB_LOCK_WAITS | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMP | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMP_RESET | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMPMEM | ACTIVE | 信息模式| NULL | GPL |
| INNODB_CMPMEM_RESET | ACTIVE | 信息模式| NULL | GPL |
| 分区| ACTIVE | 存储引擎| NULL | GPL |
+ ---------------------------------- + -------- + ----- --------------- + --------- + --------- +
22行(0.00秒)

该插件默认启用。 您可以通过使用该 --ndb-transid-mysql-connection-map 选项 启动服务器来禁用它(或强制服务器不运行,除非插件启动) 如果禁用该插件,状态将显示 SHOW PLUGINS DISABLED 无法在运行时启用或禁用插件。

尽管此表及其列的名称使用小写显示,但在SQL语句中引用它们时可以使用大写或小写。

要创建此表,MySQL服务器必须是随NDB Cluster分发提供的二进制文件,或者是从 NDB 启用 存储引擎支持 的NDB Cluster源构建的二进制文件 它在标准MySQL 8.0服务器中不可用。

25.14 INFORMATION_SCHEMA KEYWORDS表

KEYWORDS 表列出了MySQL所考虑的关键词,并且每一个都表示它是否被保留。 保留关键字在某些情况下可能需要特殊处理,例如用作标识符时的特殊引用(请参见 第9.3节“关键字和保留字” )。 此表为应用程序提供MySQL关键字信息的运行时源。

在MySQL 8.0.13之前,从 KEYWORDS 没有选择默认数据库 表中进行选择会产生错误。 (Bug#90160,Bug#27729859)

KEYWORDS 表包含以下列:

  • WORD

    关键字。

  • RESERVED

    一个整数,指示关键字是保留(1)还是非保留(0)。

这些查询分别列出所有关键字,所有保留关键字和所有非保留关键字:

SELECT * FROM INFORMATION_SCHEMA.KEYWORDS;
SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED = 1;
SELECT WORD FROM INFORMATION_SCHEMA.KEYWORDS WHERE RESERVED = 0;

后两个查询相当于:

选择WORD FROM INFORMATION_SCHEMA.KEYWORDS保留的位置;
选择WORD FROM INFORMATION_SCHEMA.KEYWORDS未保留;

如果从源代码构建MySQL,则构建过程会生成一个 keyword_list.h 头文件,其中包含一组关键字及其保留状态。 该文件可以 sql 在build目录下的目录中找到。 此文件可能对需要关键字列表的静态源的应用程序很有用。

25.15 INFORMATION_SCHEMA OPTIMIZER_TRACE表

OPTIMIZER_TRACE 表提供了由跟踪语句的优化程序跟踪功能生成的信息。 要启用跟踪,请使用 optimizer_trace 系统变量。 有关详细信息,请参阅 MySQL内部:跟踪优化程序

OPTIMIZER_TRACE 表包含以下列:

  • QUERY

    跟踪声明的文本。

  • TRACE

    跟踪, JSON 格式。

  • MISSING_BYTES_BEYOND_MAX_MEM_SIZE

    每个记住的跟踪是一个字符串,随着优化的进行而扩展,并将数据附加到该字符串。 optimizer_trace_max_mem_size 变量设置了所有当前记住的跟踪使用的内存总量的限制。 如果达到此限制,则不会扩展当前跟踪(因此不完整),该 MISSING_BYTES_BEYOND_MAX_MEM_SIZE 列显示跟踪中缺少的字节数。

  • INSUFFICIENT_PRIVILEGES

    如果跟踪查询使用具有 SQL SECURITY 值的 视图或存储例程 DEFINER ,则可能是拒绝定义者以外的用户查看查询的跟踪。 在这种情况下,跟踪显示为空并且 INSUFFICIENT_PRIVILEGES 值为1.否则,该值为0。

25.16 INFORMATION_SCHEMA参数表

PARAMETERS 表提供有关存储例程(存储过程和存储函数)的参数以及存储函数的返回值的信息。 PARAMETERS 表不包含内置SQL函数或用户定义函数(UDF)。

PARAMETERS 表包含以下列:

  • SPECIFIC_CATALOG

    包含参数的例程所属的目录的名称。 这个值总是如此 def

  • SPECIFIC_SCHEMA

    包含参数的例程所属的模式(数据库)的名称。

  • SPECIFIC_NAME

    包含参数的例程的名称。

  • ORDINAL_POSITION

    对于存储过程或函数的连续参数, ORDINAL_POSITION 值为1,2,3等。 对于存储函数,还有一行适用于函数返回值(如 RETURNS 子句所述)。 返回值不是true参数,因此描述它的行具有以下独特特征:

    • ORDINAL_POSITION 值是0。

    • PARAMETER_NAME PARAMETER_MODE 值是 NULL 因为返回值没有任何名称和模式不适用。

  • PARAMETER_MODE

    参数的模式。 此值是一个 IN OUT INOUT 对于存储函数返回值,此值为 NULL

  • PARAMETER_NAME

    参数的名称。 对于存储函数返回值,此值为 NULL

  • DATA_TYPE

    参数数据类型。

    DATA_TYPE 值只是类型名称,没有其他信息。 DTD_IDENTIFIER 值包含类型名称以及可能的其他信息,例如精度或长度。

  • CHARACTER_MAXIMUM_LENGTH

    对于字符串参数,以字符为单位的最大长度。

  • CHARACTER_OCTET_LENGTH

    对于字符串参数,以字节为单位的最大长度。

  • NUMERIC_PRECISION

    对于数字参数,数字精度。

  • NUMERIC_SCALE

    对于数字参数,数字刻度。

  • DATETIME_PRECISION

    对于时间参数,小数秒精度。

  • CHARACTER_SET_NAME

    对于字符串参数,字符集名称。

  • COLLATION_NAME

    对于字符串参数,排序规则名称。

  • DTD_IDENTIFIER

    参数数据类型。

    DATA_TYPE 值只是类型名称,没有其他信息。 DTD_IDENTIFIER 值包含类型名称以及可能的其他信息,例如精度或长度。

  • ROUTINE_TYPE

    PROCEDURE 用于存储过程, FUNCTION 用于存储的函数。

25.17 INFORMATION_SCHEMA PARTITIONS表

PARTITIONS 表提供有关表分区的信息。 此表中的每一行对应于分区表的单个分区或子分区。 有关分区表的更多信息,请参见 第23章 分区

PARTITIONS 表包含以下列:

  • TABLE_CATALOG

    表所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含分区的表的名称。

  • PARTITION_NAME

    分区的名称。

  • SUBPARTITION_NAME

    如果 PARTITIONS 表行代表子分区,则为子分区的名称; 否则 NULL

    对于 NDB :此值始终为 NULL

  • PARTITION_ORDINAL_POSITION

    所有分区的索引顺序与定义的顺序相同, 1 分配给第一个分区的编号。 随着分区的添加,删除和重组,索引可能会发生变化; 显示的数字是此列反映的当前订单,考虑到任何索引更改。

  • SUBPARTITION_ORDINAL_POSITION

    给定分区中的子分区也被索引和重新索引,其方式与在表中索引分区的方式相同。

  • PARTITION_METHOD

    值之一 RANGE LIST HASH LINEAR HASH KEY ,或 LINEAR KEY ; 也就是说, 第23.2节“分区类型”中 讨论的可用分区类型之一

  • SUBPARTITION_METHOD

    值之一 HASH LINEAR HASH KEY ,或 LINEAR KEY ; 也就是说, 第23.2.6节“ 子分区”中讨论的可用子分区类型之一

  • PARTITION_EXPRESSION

    创建表的当前分区方案 CREATE TABLE or ALTER TABLE 语句中 使用的分区函数的表达式

    例如,考虑 test 使用以下语句 数据库 中创建的分区表

    CREATE TABLE tp(
        c1 INT,
        c2 INT,
        c3 VARCHAR(25)
    哈希分区(c1 + c2)
    PARTITIONS 4;
    

    所述 PARTITION_EXPRESSION 列中的 PARTITIONS 用于从该表中显示一个分区表中的行 c1 + c2 ,如下所示:

    MySQL的> SELECT DISTINCT PARTITION_EXPRESSION
           FROM INFORMATION_SCHEMA.PARTITIONS
           WHERE TABLE_NAME='tp' AND TABLE_SCHEMA='test';
    + ---------------------- +
    | PARTITION_EXPRESSION |
    + ---------------------- +
    | c1 + c2 |
    + ---------------------- +
    
  • SUBPARTITION_EXPRESSION

    对于用于定义表的子分区的子分区表达式,这与 PARTITION_EXPRESSION 用于定义表分区的分区表达式的作用方式相同。

    如果表没有子分区,则此列为 NULL

  • PARTITION_DESCRIPTION

    此列用于RANGE和LIST分区。 对于 RANGE 分区,它包含分区 VALUES LESS THAN 子句中 设置的值 ,可以是整数或 MAXVALUE 对于 LIST 分区,此列包含分区 VALUES IN 子句中 定义的值,该 子句是逗号分隔的整数值列表。

    对于 PARTITION_METHOD RANGE or 之外的 分区 LIST ,此列始终为 NULL

  • TABLE_ROWS

    分区中的表行数。

    对于分区 InnoDB 表,列中给出的行计数 TABLE_ROWS 仅是SQL优化中使用的估计值,并且可能并不总是精确的。

    对于 NDB 表,您还可以使用 ndb_desc 实用程序 获取此信息

  • AVG_ROW_LENGTH

    存储在此分区或子分区中的行的平均长度,以字节为单位。 这与 DATA_LENGTH 除以 相同 TABLE_ROWS

    对于 NDB 表,您还可以使用 ndb_desc 实用程序 获取此信息

  • DATA_LENGTH

    存储在此分区或子分区中的所有行的总长度,以字节为单位; 也就是说,分区或子分区中存储的总字节数。

    对于 NDB 表,您还可以使用 ndb_desc 实用程序 获取此信息

  • MAX_DATA_LENGTH

    可以存储在此分区或子分区中的最大字节数。

    对于 NDB 表,您还可以使用 ndb_desc 实用程序 获取此信息

  • INDEX_LENGTH

    此分区或子分区的索引文件的长度(以字节为单位)。

    对于 NDB 表的 分区 ,无论表使用隐式分区还是显式分区, INDEX_LENGTH 列值始终为0.但是,您可以使用 ndb_desc 实用程序 获取等效信息

  • DATA_FREE

    分配给分区或子分区但未使用的字节数。

    对于 NDB 表,您还可以使用 ndb_desc 实用程序 获取此信息

  • CREATE_TIME

    创建分区或子分区的时间。

  • UPDATE_TIME

    上次修改分区或子分区的时间。

  • CHECK_TIME

    检查此分区或子分区所属的表的最后一次。

    对于分区 InnoDB 表,值始终为 NULL

  • CHECKSUM

    校验和值,如果有的话; 否则 NULL

  • PARTITION_COMMENT

    注释的文本,如果分区有一个。 如果不是,则该值为空。

    分区注释的最大长度定义为1024个字符, PARTITION_COMMENT 的显示宽度 也是1024,符合此限制的字符。

  • NODEGROUP

    这是分区所属的节点组。 这仅与NDB Cluster表相关; 否则,值始终为 0

  • TABLESPACE_NAME

    分区所属的表空间的名称。 DEFAULT 除非表使用 NDB 存储引擎 ,否则 该值始终 (请参阅 本节末尾 注释 )。

笔记

  • PARTITIONS 表是一个非标准 INFORMATION_SCHEMA 表。

  • 使用除 NDB 分区 之外的任何存储引擎 PARTITIONS 表中 都有一行 然而,值 PARTITION_NAME SUBPARTITION_NAME PARTITION_ORDINAL_POSITION SUBPARTITION_ORDINAL_POSITION PARTITION_METHOD SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION ,和 PARTITION_DESCRIPTION 列所有 NULL 此外, PARTITION_COMMENT 这种情况下 列是空白的。

  • 一个 NDB 未明确分区表具有在所述一个行 PARTITIONS 表中为NDB集群中的每个节点的数据。 对于每一行:

    • SUBPARTITION_NAME SUBPARTITION_ORDINAL_POSITION SUBPARTITION_METHOD PARTITION_EXPRESSION SUBPARTITION_EXPRESSION CREATE_TIME UPDATE_TIME CHECK_TIME CHECKSUM ,和 TABLESPACE_NAME 列所有 NULL

    • PARTITION_METHOD 始终 AUTO

    • NODEGROUP default

    • PARTITION_EXPRESSION PARTITION_COMMENT 列是空的。

25.18 INFORMATION_SCHEMA PLUGINS表

PLUGINS 表提供有关服务器插件的信息。

PLUGINS 表包含以下列:

  • PLUGIN_NAME

    用于在诸如 INSTALL PLUGIN 和之类的 语句中引用插件的名称 UNINSTALL PLUGIN

  • PLUGIN_VERSION

    插件的常规类型描述符中的版本。

  • PLUGIN_STATUS

    该插件的状态,一 ACTIVE INACTIVE DISABLED DELETING ,或 DELETED

  • PLUGIN_TYPE

    该类型的插件,如 STORAGE ENGINE INFORMATION_SCHEMA ,或 AUTHENTICATION

  • PLUGIN_TYPE_VERSION

    插件的特定于类型的描述符中的版本。

  • PLUGIN_LIBRARY

    插件共享库文件的名称。 这是用于在诸如 INSTALL PLUGIN 和之类的 语句中引用插件文件的名称 UNINSTALL PLUGIN 此文件位于 plugin_dir 系统变量 指定的目录中 如果库名是 NULL ,则插件编译在中,无法卸载 UNINSTALL PLUGIN

  • PLUGIN_LIBRARY_VERSION

    插件API接口版本。

  • PLUGIN_AUTHOR

    插件作者。

  • PLUGIN_DESCRIPTION

    插件的简短描述。

  • PLUGIN_LICENSE

    插件的许可方式(例如 GPL )。

  • LOAD_OPTION

    如何加载插件。 值是 OFF ON FORCE ,或 FORCE_PLUS_PERMANENT 请参见 第5.6.1节“安装和卸载插件”

笔记

插件信息也可从 SHOW PLUGINS 声明中获得。 请参见 第13.7.6.25节“SHOW PLUGINS语法” 这些陈述是等价的:

选择
  PLUGIN_NAME,PLUGIN_STATUS,PLUGIN_TYPE,
  PLUGIN_LIBRARY,PLUGIN_LICENSE
FROM INFORMATION_SCHEMA.PLUGINS;

显示插件;

25.19 INFORMATION_SCHEMA PROCESSLIST表

PROCESSLIST 表提供有关正在运行的线程的信息。

PROCESSLIST 表包含以下列:

  • ID

    连接标识符。 这是在 语句的 列,Performance Schema Id 列中 显示的相同类型的值 ,并由 函数 返回 SHOW PROCESSLIST PROCESSLIST_ID threads CONNECTION_ID()

  • USER

    发出声明的MySQL用户。 值是 system user 指服务器在内部处理任务而生成的非客户端线程。 这可能是复制从属或延迟行处理程序上使用的I / O或SQL线程。 对于 system user Host 列中 未指定主机 unauthenticated user 指的是已与客户端连接关联但尚未对客户端用户进行身份验证的线程。 event_scheduler 指监视预定事件的线程(请参见 第24.4节“使用事件调度程序” )。

    注意

    USER 的值 system user 是从不同的 SYSTEM_USER 特权。 前者指定内部线程。 后者区分系统用户和常规用户帐户类别(请参见 第6.2.11节“帐户类别” )。

  • HOST

    发出语句的客户端的主机名(除了 system user 没有主机 的客户端 )。 TCP / IP连接的主机名以 格式 报告, 以便更容易确定哪个客户端正在执行哪些操作。 host_name:client_port

  • DB

    默认数据库(如果选择了一个); 否则 NULL

  • COMMAND

    线程正在执行的命令类型。 有关线程命令的说明,请参见 第8.14节“检查线程信息” 此列的值对应于 客户端/服务器协议和 状态变量 命令 请参见 第5.1.10节“服务器状态变量” COM_xxx Com_xxx

  • TIME

    线程处于当前状态的时间(以秒为单位)。 对于从属SQL线程,该值是最后一个复制事件的时间戳与从属机器的实时之间的秒数。 请参见 第17.2.2节“复制实现细节”

  • STATE

    指示线程正在执行的操作,事件或状态。 有关 STATE 值的 说明,请 参见 第8.14节“检查线程信息”

    大多数州对应于非常快速的操作。 如果一个线程在给定状态下停留很多秒,则可能存在需要调查的问题。

    对于 SHOW PROCESSLIST 声明中的价值 STATE NULL

  • INFO

    线程正在执行的语句,或者 NULL 它是否正在执行任何语句。 语句可能是发送到服务器的语句,如果语句执行其他语句,则可能是最内层语句。 例如,如果 CALL 语句执行正在执行语句的存储过程,则 SELECT INFO 值显示该 SELECT 语句。

笔记

  • PROCESSLIST 表是一个非标准 INFORMATION_SCHEMA 表。

  • SHOW PROCESSLIST 语句 的输出一样 ,该 PROCESSLIST 表仅显示有关您自己的线程的信息,除非您拥有该 PROCESS 权限,在这种情况下,您也将看到有关其他线程的信息。 作为匿名用户,您根本看不到任何行。

  • 如果SQL语句引用该 PROCESSLIST 表,则在语句执行开始时,MySQL会填充整个表一次,因此在语句期间存在读取一致性。 多语句事务没有读一致性。

进程信息也可以从 mysqladmin processlist 命令, SHOW PROCESSLIST 语句和Performance Schema threads 表中获得(参见 第4.5.2节“ mysqladmin - 管理MySQL服务器的客户端” 第13.7.6.29节“SHOW PROCESSLIST语法” Section 26.12.17.5,“线程表” )。 INFORMATION_SCHEMA PROCESSLIST 表和 SHOW PROCESSLIST 语句相比,由于它们需要互斥锁而导致性能损失,因此访问 threads 不需要互斥锁,并且对服务器性能的影响最小。 threads 表还显示了有关后台线程的信息, PROCESSLIST 表中 SHOW PROCESSLIST 没有。 这意味着 threads 可以用来监视其他线程信息源不能的活动。

以下陈述是等效的:

SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST

显示完整的流程列表

25.20 INFORMATION_SCHEMA概况表

PROFILING 表提供了语句分析信息。 其内容对应于 SHOW PROFILE SHOW PROFILES 语句 生成的信息 (参见 第13.7.6.30节“SHOW PROFILE语法” )。 除非 profiling 会话变量设置为1, 否则该表为空

注意

此表已弃用,将在以后的MySQL版本中删除。 请改用 Performance Schema ; 请参见 第26.19.1节“使用性能模式查询分析”

PROFILING 表包含以下列:

  • QUERY_ID

    数字语句标识符。

  • SEQ

    一个序列号,指示具有相同 QUERY_ID 值的 行的显示顺序

  • STATE

    行测量适用的分析状态。

  • DURATION

    语句执行在给定状态中保持多长时间,以秒为单位。

  • CPU_USER CPU_SYSTEM

    用户和系统CPU使用,以秒为单位。

  • CONTEXT_VOLUNTARY CONTEXT_INVOLUNTARY

    发生了多少自愿和非自愿的上下文切换。

  • BLOCK_OPS_IN BLOCK_OPS_OUT

    块输入和输出操作的数量。

  • MESSAGES_SENT MESSAGES_RECEIVED

    发送和接收的通信消息数。

  • PAGE_FAULTS_MAJOR PAGE_FAULTS_MINOR

    主要和次要页面错误的数量。

  • SWAPS

    发生了多少掉期。

  • SOURCE_FUNCTION SOURCE_FILE SOURCE_LINE

    指示配置文件状态在源代码中的位置执行的信息。

笔记

  • PROFILING 表是一个非标准 INFORMATION_SCHEMA 表。

分析信息也可以从 SHOW PROFILE SHOW PROFILES 语句中获得。 请参见 第13.7.6.30节“显示配置文件语法” 例如,以下查询是等效的:

显示查询2;

选择状态,格式化(持续时间,6)作为持续时间
来自INFORMATION_SCHEMA.PROFILING
WHERE QUERY_ID = 2 ORDER BY SEQ;

25.21 INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS表

REFERENTIAL_CONSTRAINTS 表提供有关外键的信息。

REFERENTIAL_CONSTRAINTS 表包含以下列:

  • CONSTRAINT_CATALOG

    约束所属目录的名称。 这个值总是如此 def

  • CONSTRAINT_SCHEMA

    约束所属的模式(数据库)的名称。

  • CONSTRAINT_NAME

    约束的名称。

  • UNIQUE_CONSTRAINT_CATALOG

    包含约束引用的唯一约束的目录的名称。 这个值总是如此 def

  • UNIQUE_CONSTRAINT_SCHEMA

    包含约束引用的唯一约束的模式的名称。

  • UNIQUE_CONSTRAINT_NAME

    约束引用的唯一约束的名称。

  • MATCH_OPTION

    约束 MATCH 属性 的值 目前唯一有效的值是 NONE

  • UPDATE_RULE

    约束 ON UPDATE 属性 的值 可能的值是 CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION

  • DELETE_RULE

    约束 ON DELETE 属性 的值 可能的值是 CASCADE SET NULL SET DEFAULT RESTRICT NO ACTION

  • TABLE_NAME

    表的名称。 该值与 TABLE_CONSTRAINTS 中的值相同

  • REFERENCED_TABLE_NAME

    约束引用的表的名称。

25.22 INFORMATION_SCHEMA RESOURCE_GROUPS表

RESOURCE_GROUPS 表提供对资源组信息的访问。 有关资源组功能的一般讨论,请参见 第8.12.5节“资源组”

您只能查看您拥有某些权限的列的信息。

RESOURCE_GROUPS 表包含以下列:

  • RESOURCE_GROUP_NAME

    资源组的名称。

  • RESOURCE_GROUP_TYPE

    资源组类型, SYSTEM 或者 USER

  • RESOURCE_GROUP_ENABLED

    资源组是启用(1)还是禁用(0);

  • VCPU_IDS

    CPU亲和力; 也就是说,资源组可以使用的一组虚拟CPU。 该值是以逗号分隔的CPU编号或范围的列表。

  • THREAD_PRIORITY

    分配给资源组的线程的优先级。 优先级范围从-20(最高优先级)到19(最低优先级)。 系统资源组的优先级范围为-20到0.用户资源组的优先级范围为0到19。

25.23 INFORMATION_SCHEMA ROUTINES表

ROUTINES 表提供有关存储例程(存储过程和存储函数)的信息。 ROUTINES 表不包含内置SQL函数或用户定义函数(UDF)。

ROUTINES 表包含以下列:

  • SPECIFIC_NAME

    例程的名称。

  • ROUTINE_CATALOG

    例程所属目录的名称。 这个值总是如此 def

  • ROUTINE_SCHEMA

    例程所属的模式(数据库)的名称。

  • ROUTINE_NAME

    例程的名称。

  • ROUTINE_TYPE

    PROCEDURE 用于存储过程, FUNCTION 用于存储的函数。

  • DATA_TYPE

    如果例程是存储函数,则返回值数据类型。 如果例程是存储过程,则此值为空。

    DATA_TYPE 值只是类型名称,没有其他信息。 DTD_IDENTIFIER 值包含类型名称以及可能的其他信息,例如精度或长度。

  • CHARACTER_MAXIMUM_LENGTH

    对于存储的函数字符串返回值,以字符为单位的最大长度。 如果例程是存储过程,则此值为 NULL

  • CHARACTER_OCTET_LENGTH

    对于存储函数字符串返回值,最大长度(以字节为单位)。 如果例程是存储过程,则此值为 NULL

  • NUMERIC_PRECISION

    对于存储函数数字返回值,数字精度。 如果例程是存储过程,则此值为 NULL

  • NUMERIC_SCALE

    对于存储的函数数字返回值,数字刻度。 如果例程是存储过程,则此值为 NULL

  • DATETIME_PRECISION

    对于存储的函数时间返回值,小数秒精度。 如果例程是存储过程,则此值为 NULL

  • CHARACTER_SET_NAME

    对于存储的函数字符串返回值,字符集名称。 如果例程是存储过程,则此值为 NULL

  • COLLATION_NAME

    对于存储的函数字符串返回值,排序规则名称。 如果例程是存储过程,则此值为 NULL

  • DTD_IDENTIFIER

    如果例程是存储函数,则返回值数据类型。 如果例程是存储过程,则此值为空。

    DATA_TYPE 值只是类型名称,没有其他信息。 DTD_IDENTIFIER 值包含类型名称以及可能的其他信息,例如精度或长度。

  • ROUTINE_BODY

    用于例程定义的语言。 这个值总是如此 SQL

  • ROUTINE_DEFINITION

    例程执行的SQL语句的文本。

  • EXTERNAL_NAME

    这个值总是如此 NULL

  • EXTERNAL_LANGUAGE

    存储例程的语言。 该值从 数据字典表 external_language 列中 读取 mysql.routines

  • PARAMETER_STYLE

    这个值总是如此 SQL

  • IS_DETERMINISTIC

    YES 或者 NO ,取决于例程是否定义了 DETERMINISTIC 特征。

  • SQL_DATA_ACCESS

    例程的数据访问特性。 值中的一个 CONTAINS SQL NO SQL READS SQL DATA ,或 MODIFIES SQL DATA

  • SQL_PATH

    这个值总是如此 NULL

  • SECURITY_TYPE

    常规 SQL SECURITY 特征。 值是 DEFINER 或之一 INVOKER

  • CREATED

    创建例程的日期和时间。 这是一个 TIMESTAMP 价值。

  • LAST_ALTERED

    上次修改例程的日期和时间。 这是一个 TIMESTAMP 价值。 如果例程自创建以来未被修改,则此值与该 CREATED 相同

  • SQL_MODE

    创建或更改例程时执行的SQL模式,以及执行例程的情况。 有关允许的值,请参见 第5.1.11节“服务器SQL模式”

  • ROUTINE_COMMENT

    注释的文本,如果例程有一个。 如果不是,则该值为空。

  • DEFINER

    格式 创建例程的用户的帐户 'user_name'@'host_name'

  • CHARACTER_SET_CLIENT

    character_set_client 创建例程时系统变量 的会话值

  • COLLATION_CONNECTION

    collation_connection 创建例程时系统变量 的会话值

  • DATABASE_COLLATION

    与例程关联的数据库的排序规则。

笔记

  • PARAMETERS 表中 还提供了有关存储的函数返回值的信息 存储函数的返回值行可以标识为 ORDINAL_POSITION 值为0的行。

25.24 INFORMATION_SCHEMA SCHEMATA表

模式是数据库,因此该 SCHEMATA 表提供有关数据库的信息。

SCHEMATA 表包含以下列:

  • CATALOG_NAME

    架构所属目录的名称。 这个值总是如此 def

  • SCHEMA_NAME

    架构的名称。

  • DEFAULT_CHARACTER_SET_NAME

    架构默认字符集。

  • DEFAULT_COLLATION_NAME

    架构默认排序规则。

  • SQL_PATH

    这个值总是如此 NULL

  • DEFAULT_ENCRYPTION

    架构默认加密。 此列已添加到MySQL 8.0.16中。

模式名称也可从 SHOW DATABASES 声明中获得。 请参见 第13.7.6.14节“显示数据库语法” 以下陈述是等效的:

选择SCHEMA_NAME AS`数据库`
  来自INFORMATION_SCHEMA.SCHEMATA
  [SCHEMA_NAME LIKE' wild']

显示数据库
  [喜欢 'wild']

您只能看到具有某种特权的数据库,除非您拥有全局 SHOW DATABASES 特权。

警告

因为任何静态全局特权被认为是所有数据库的特权,任何静态全局特权使用户能够看到所有的数据库名称 SHOW DATABASES 或通过检查 SCHEMATA INFORMATION_SCHEMA ,除了已经在通过局部撤销数据库级别被限制的数据库。

25.25 INFORMATION_SCHEMA SCHEMA_PRIVILEGES表

SCHEMA_PRIVILEGES 表提供有关架构(数据库)特权的信息。 它的价值来自于 mysql.db 系统表中

SCHEMA_PRIVILEGES 表包含以下列:

  • GRANTEE

    授予权限的帐户的名称, 格式为。 'user_name'@'host_name'

  • TABLE_CATALOG

    架构所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    架构的名称。

  • PRIVILEGE_TYPE

    授予的特权。 该值可以是可以在架构级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 每行列出一个权限,因此被授权者拥有每个模式权限一行。

  • IS_GRANTABLE

    YES 如果用户有 GRANT OPTION 权限, NO 否则。 输出未 GRANT OPTION 列为单独的行 PRIVILEGE_TYPE='GRANT OPTION'

笔记

以下陈述 不是 相同:

SELECT ... FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES

显示奖学金......

25.26 INFORMATION_SCHEMA统计表

STATISTICS 表提供有关表索引的信息。

STATISTICS 表示表统计信息的 包含缓存值。 information_schema_stats_expiry 系统变量定义缓存表统计到期之前的一段时间。 默认值为86400秒(24小时)。 如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时会从存储引擎中检索统计信息。 要随时更新给定表的缓存值,请使用 ANALYZE TABLE 要始终直接从存储引擎检索最新统计信息,请进行设置 information_schema_stats_expiry=0 有关更多信息,请参见 第8.2.3节“优化INFORMATION_SCHEMA查询”

注意

如果 innodb_read_only 启用 系统变量,则 ANALYZE TABLE 可能会失败,因为它无法更新数据字典中使用的统计表 InnoDB 对于 ANALYZE TABLE 更新密钥分发的操作,即使操作更新表本身(例如,如果它是 MyISAM 表) ,也可能发生故障 要获取更新的分布统计信息,请设置 information_schema_stats_expiry=0

STATISTICS 表包含以下列:

  • TABLE_CATALOG

    包含索引的表所属的目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    包含索引的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含索引的表的名称。

  • NON_UNIQUE

    如果索引不能包含重复项,则为0;如果可以,则为1。

  • INDEX_SCHEMA

    索引所属的模式(数据库)的名称。

  • INDEX_NAME

    索引的名称。 如果索引是主键,则名称始终为 PRIMARY

  • SEQ_IN_INDEX

    索引中的列序列号,以1开头。

  • COLUMN_NAME

    列名称。 另请参见该 EXPRESSION 的说明

  • COLLATION

    列如何在索引中排序。 这可以具有值 A (升序), D (降序)或 NULL (未排序)。

  • CARDINALITY

    估计索引中的唯一值的数量。 要更新此号码,请运行 ANALYZE TABLE 或(对于 MyISAM 表格) myisamchk -a

    CARDINALITY 根据存储为整数的统计信息计算,因此即使对于小型表,该值也不一定精确。 基数越高,MySQL在进行连接时使用索引的可能性就越大。

  • SUB_PART

    索引前缀。 也就是说, NULL 如果整列被索引 那么如果 列仅被部分索引, 索引字符的数量

    注意

    前缀 限制 以字节为单位。 然而,前缀 长度 为索引规范 CREATE TABLE ALTER TABLE CREATE INDEX 语句解释为非二进制字符串类型(字符数 CHAR VARCHAR TEXT )和字节数为二进制串类型( BINARY VARBINARY BLOB )。 在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。

    有关索引前缀的其他信息,请参见 第8.3.5节“列索引” 第13.1.15节“CREATE INDEX语法”

  • PACKED

    指示密钥的打包方式。 NULL 如果不是。

  • NULLABLE

    包含 YES 如果列可能包含 NULL 的值和 '' 如果不。

  • INDEX_TYPE

    使用的索引方法( BTREE FULLTEXT HASH RTREE )。

  • COMMENT

    有关未在其自己的列中描述的索引的信息,例如 disabled 是否已禁用索引。

  • INDEX_COMMENT

    COMMENT 在创建索引时为索引 提供的任何注释都带有 属性。

  • IS_VISIBLE

    索引是否对优化程序可见。 请参见 第8.3.12节“不可见索引”

  • EXPRESSION

    MySQL 8.0.13及更高版本支持功能关键部分(请参阅 功能键部件 ),它会影响 COLUMN_NAME EXPRESSION 列:

    • 对于非功能键部分, COLUMN_NAME 表示由键部分索引的列,并且 EXPRESSION NULL

    • 对于功能键部分, COLUMN_NAME 列是 NULL EXPRESSION 指示关键部分的表达式。

笔记

  • INFORMATION_SCHEMA 索引 没有标准 表。 MySQL列列表类似于SQL Server 2000返回的列表 sp_statistics ,除了它们 QUALIFIER OWNER 分别替换为 CATALOG SCHEMA

有关表索引的信息也可从 SHOW INDEX 语句中获得。 请参见 第13.7.6.22节“显示索引语法” 以下陈述是等效的:

SELECT * FROM INFORMATION_SCHEMA.STATISTICS
  WHERE table_name ='tbl_name'
  AND table_schema =' db_name'

显示索引tbl_name
  FROMdb_name

25.27 INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS表

ST_GEOMETRY_COLUMNS 表提供有关存储空间数据的表列的信息。 该表基于SQL / MM(ISO / IEC 13249-3)标准,并附有扩展名。 MySQL实现 ST_GEOMETRY_COLUMNS INFORMATION_SCHEMA COLUMNS 上的视图

ST_GEOMETRY_COLUMNS 表包含以下列:

  • TABLE_CATALOG

    包含该列的表所属的目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    包含列的表所属的模式(数据库)的名称。

  • TABLE_NAME

    包含该列的表的名称。

  • COLUMN_NAME

    列的名称。

  • SRS_NAME

    空间参照系(SRS)名称。

  • SRS_ID

    空间参考系统ID(SRID)。

  • GEOMETRY_TYPE_NAME

    列数据类型。 允许的值是: geometry point linestring polygon multipoint multilinestring multipolygon geometrycollection 此列是标准的MySQL扩展。

25.28 INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS表

ST_SPATIAL_REFERENCE_SYSTEMS 表提供有关空间数据的可用空间参考系统的信息。 该表基于SQL / MM(ISO / IEC 13249-3)标准。

ST_SPATIAL_REFERENCE_SYSTEMS 表中的 条目 基于 欧洲石油勘探组 (EPSG)数据集,SRID 0除外,SRID 0对应于MySQL中使用的特殊SRS,表示无轴平坦笛卡尔平面,其轴没有分配单位。 有关SRS的其他信息,请参见 第11.5.5节“空间参考系统支持”

ST_SPATIAL_REFERENCE_SYSTEMS 表包含以下列:

  • SRS_NAME

    空间参考系统名称。 这个值是唯一的。

  • SRS_ID

    空间参考系统数字ID。 这个值是唯一的。

    SRS_ID values表示与空间函数的SRID参数一起传递的相同类型的值。 SRID 0(无单位笛卡尔平面)很特殊。 它始终是合法的空间参考系统ID,可用于依赖于SRID值的空间数据的任何计算。

  • ORGANIZATION

    定义空间参考系统所基于的坐标系的组织的名称。

  • ORGANIZATION_COORDSYS_ID

    由定义它的组织提供给空间参照系的数字ID。

  • DEFINITION

    空间参考系统定义。 DEFINITION 值是WKT值,表示为 Open Geospatial Consortium 文档 OGC 12-063r5中 指定的值

    当GIS功能需要定义时,SRS定义解析按需发生。 解析的定义缓存在数据字典缓存中,因此不会为每个需要SRS信息的语句产生解析开销。

  • DESCRIPTION

    空间参考系统描述。

笔记

  • SRS_NAME ORGANIZATION ORGANIZATION_COORDSYS_ID ,和 DESCRIPTION 列包含可能会感兴趣的用户信息,但它们不是MySQL使用。

MySQL的> SELECT * FROM ST_SPATIAL_REFERENCE_SYSTEMS
       WHERE SRS_ID = 4326\G
*************************** 1。排******************** *******
                SRS_NAME:WGS 84
                  SRS_ID:4326
            组织:EPSG
ORGANIZATION_COORDSYS_ID:4326
              定义:GEOGCS [“WGS 84”,DATUM [“世界大地测量系统1984”,
                          SPHEROID [“WGS 84”,6378137,298.257223563,
                          AUTHORITY [ “EPSG”, “7030”]],AUTHORITY [ “EPSG”, “6326”]],
                          PRIMEM [ “格林威治”,0,AUTHORITY [ “EPSG”, “8901”]],
                          UNIT [ “度”,0.017453292519943278,
                          AUTHORITY [ “EPSG”, “9122”]],
                          AXIS [ “纬度”,北],AXIS [ “龙”,EAST]
                          AUTHORITY [ “EPSG”, “4326”]]
             描述:

此条目描述了用于GPS系统的SRS。 它的名称( SRS_NAME )为WGS 84,ID( SRS_ID )为4326,这是 欧洲石油调查组 (EPSG) 使用的ID

DEFINITION 预测和地理SRS 分别 PROJCS 开头 GEOGCS SRID 0的定义是特殊的,并且具有空 DEFINITION 值。 以下查询根据值确定表中有多少条目 ST_SPATIAL_REFERENCE_SYSTEMS 对应于投影,地理和其他SRS DEFINITION

MySQL的> SELECT
         COUNT(*),
         CASE LEFT(DEFINITION, 6)
           WHEN 'PROJCS' THEN 'Projected'
           WHEN 'GEOGCS' THEN 'Geographic'
           ELSE 'Other'
         END AS SRS_TYPE
       FROM ST_SPATIAL_REFERENCE_SYSTEMS
       GROUP BY SRS_TYPE;
+ ---------- + ------------ +
| COUNT(*)| SRS_TYPE |
+ ---------- + ------------ +
| 1 | 其他|
| 4668 | 预计|
| 483 | 地理|
+ ---------- + ------------ +

为了能够操作存储在数据字典中的SRS条目,MySQL提供了以下SQL语句:

25.29 INFORMATION_SCHEMA ST_UNITS_OF_MEASURE表

ST_UNITS_OF_MEASURE 表(从MySQL 8.0.14开始提供)提供有关该 ST_Distance() 函数 可接受单位的信息

ST_UNITS_OF_MEASURE 表包含以下列:

  • UNIT_NAME

    单位的名称。

  • UNIT_TYPE

    单位类型(例如 LINEAR )。

  • CONVERSION_FACTOR

    用于内部计算的转换因子。

  • DESCRIPTION

    单位的描述。

25.30 INFORMATION_SCHEMA TABLES表

TABLES 表提供有关数据库中表的信息。

TABLES 表示表统计信息的 包含缓存值。 information_schema_stats_expiry 系统变量定义缓存表统计到期之前的一段时间。 默认值为86400秒(24小时)。 如果没有缓存的统计信息或统计信息已过期,则在查询表统计信息列时会从存储引擎中检索统计信息。 要随时更新给定表的缓存值,请使用 ANALYZE TABLE 要始终直接从存储引擎检索最新统计信息,请设置 information_schema_stats_expiry 0 有关更多信息,请参见 第8.2.3节“优化INFORMATION_SCHEMA查询”

注意

如果 innodb_read_only 启用 系统变量,则 ANALYZE TABLE 可能会失败,因为它无法更新数据字典中使用的统计表 InnoDB 对于 ANALYZE TABLE 更新密钥分发的操作,即使操作更新表本身(例如,如果它是 MyISAM 表) ,也可能发生故障 要获取更新的分布统计信息,请设置 information_schema_stats_expiry=0

TABLES 表包含以下列:

  • TABLE_CATALOG

    表所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    表的名称。

  • TABLE_TYPE

    BASE TABLE 用于表格, VIEW 用于视图或 SYSTEM VIEW 用于 表格 INFORMATION_SCHEMA 表格。

    TABLES 表未列出 TEMPORARY 表格。

  • ENGINE

    表的存储引擎。 请参见 第15章, InnoDB存储引擎 第16章, 备用存储引擎

    对于分区表, ENGINE 显示所有分区使用的存储引擎的名称。

  • VERSION

    此列未使用。 通过删除 .frm MySQL 8.0中 文件,此列现在报告硬编码值 10 ,这是 .frm MySQL 5.7中使用 的最后一个 文件版本。

  • ROW_FORMAT

    该行的存储格式( Fixed Dynamic Compressed Redundant Compact )。 对于 MyISAM 表格, Dynamic 对应 myisamchk -dvv 报告的内容 Packed

  • TABLE_ROWS

    行数。 某些存储引擎(例如 MyISAM )存储确切的计数。 对于其他存储引擎,例如 InnoDB ,该值是近似值,并且可以与实际值相差多达40%至50%。 在这种情况下,用于 SELECT COUNT(*) 获得准确的计数。

    TABLE_ROWS NULL INFORMATION_SCHEMA 表。

    对于 InnoDB 表,行计数仅是SQL优化中使用的粗略估计。 (如果 InnoDB 表已分区, 也是如此 。)

  • AVG_ROW_LENGTH

    平均行长。

  • DATA_LENGTH

    For MyISAM DATA_LENGTH 是数据文件的长度,以字节为单位。

    For InnoDB DATA_LENGTH 是为聚簇索引分配的大致内存量,以字节为单位。 具体来说,它是聚集索引大小(以页为单位)乘以 InnoDB 页面大小。

    有关其他存储引擎的信息,请参阅本节末尾的注释。

  • MAX_DATA_LENGTH

    对于 MyISAM MAX_DATA_LENGTH 是数据文件的最大长度。 这是在给定数据指针大小的情况下可以存储在表中的数据的总字节数。

    未使用 InnoDB

    有关其他存储引擎的信息,请参阅本节末尾的注释。

  • INDEX_LENGTH

    For MyISAM INDEX_LENGTH 是索引文件的长度,以字节为单位。

    For InnoDB INDEX_LENGTH 是为非聚簇索引分配的大致内存量,以字节为单位。 具体来说,它是非聚集索引大小(以页为单位)乘以 InnoDB 页面大小 的总和

    有关其他存储引擎的信息,请参阅本节末尾的注释。

  • DATA_FREE

    已分配但未使用的字节数。

    InnoDB tables报告表所属的表空间的可用空间。 对于位于共享表空间中的表,这是共享表空间的可用空间。 如果您使用多个表空间并且该表具有自己的表空间,则可用空间仅用于该表。 可用空间表示完全空闲的区域中的字节数减去安全边界。 即使可用空间显示为0,只要不需要分配新的扩展区,就可以插入行。

    对于NDB Cluster, DATA_FREE 显示磁盘上为磁盘数据表或磁盘分配但未使用的空间。 (内存数据资源使用情况由报告 DATA_LENGTH 。)

    对于分区表,此值仅为估计值,可能不完全正确。 在这种情况下获取此信息的更准确方法是查询 INFORMATION_SCHEMA PARTITIONS 表,如下例所示:

    SELECT SUM(DATA_FREE)
        来自INFORMATION_SCHEMA.PARTITIONS
        WHERE TABLE_SCHEMA ='mydb'
        AND TABLE_NAME ='mytable';
    

    有关更多信息,请参见 第25.17节“INFORMATION_SCHEMA PARTITIONS表”

  • AUTO_INCREMENT

    下一个 AUTO_INCREMENT 值。

  • CREATE_TIME

    创建表时。

  • UPDATE_TIME

    上次更新数据文件时。 对于某些存储引擎,此值为 NULL 例如, InnoDB 在其 系统表空间中 存储多个表, 并且数据文件时间戳不适用。 即使 文件每次表 模式与每个 InnoDB 在单独的表 .ibd 文件, 改变缓冲 可以延缓写入到数据文件,因此,文件的修改时间是从最后插入的时间不同,更新或删除。 对于 MyISAM ,使用数据文件时间戳; 但是,在Windows上,更新不会更新时间戳,因此值不准确。

    UPDATE_TIME 显示最后一个 UPDATE INSERT DELETE InnoDB 未分区的表上 执行 的时间戳值 对于MVCC,时间戳值反映 COMMIT 时间,该时间被视为上次更新时间。 重新启动服务器或从 InnoDB 数据字典缓存中 逐出表时,时间戳不会保留

  • CHECK_TIME

    上次检查表时。 此时并非所有存储引擎都更新,在这种情况下,值始终为 NULL

    对于分区 InnoDB 表, CHECK_TIME 总是如此 NULL

  • TABLE_COLLATION

    表默认排序规则。 输出未显式列出表默认字符集,但排序规则名称以字符集名称开头。

  • CHECKSUM

    实时校验和值(如果有)。

  • CREATE_OPTIONS

    使用的额外选项 CREATE TABLE CREATE TABLE 保留执行 时指定的原始选项 报告的信息可能与当前表设置和选项不同。

    对于 InnoDB 表格,显示实际 ROW_FORMAT KEY_BLOCK_SIZE 选项。 在MySQL 8.0之前, CREATE_OPTIONS 显示最初提供的 ROW_FORMAT KEY_BLOCK_SIZE 有关更多信息,请参见 第13.1.20节“CREATE TABLE语法”

    CREATE_OPTIONS 显示 partitioned 分区表。 在MySQL 8.0.16之前,它还显示了 ENCRYPTION 为在每个表文件表空间中创建的表指定 子句。 从MySQL 8.0.16开始,如果表已加密或指定的加密与架构加密不同,它仅显示每表文件表空间的加密子句。 对于在通用表空间中创建的表,不显示加密子句。 要识别加密的每表和一般表空间,请查询该 列。 INNODB_TABLESPACES ENCRYPTION

  • TABLE_COMMENT

    创建表时使用的注释(或有关MySQL无法访问表信息的信息)。

笔记

  • 对于 NDB 表,此语句的输出显示 AVG_ROW_LENGTH DATA_LENGTH 列的 适当值,但 BLOB 不考虑列。

  • 对于 NDB 表格,仅 DATA_LENGTH 包括存储在主存储器中的数据; MAX_DATA_LENGTH DATA_FREE 列应用到磁盘的数据。

  • 对于NDB Cluster Disk Data表, MAX_DATA_LENGTH 显示为磁盘数据表或片段的磁盘部分分配的空间。 DATA_LENGTH 报告内存数据资源使用情况 。)

  • 对于 MEMORY 表, DATA_LENGTH MAX_DATA_LENGTH ,和 INDEX_LENGTH 值近似分配内存的实际数量。 分配算法大量保留存储器以减少分配操作的数量。

  • 对于视图,大多数 TABLES 列为0或 NULL 除了 TABLE_NAME 表示视图名称, CREATE_TIME 表示创建时间,并 TABLE_COMMENT VIEW

表信息也可以从 SHOW TABLE STATUS SHOW TABLES 语句中获得。 请参见 第13.7.6.36节“SHOW TABLE STATUS语法” 第13.7.6.37节“SHOW TABLES语法” 以下陈述是等效的:

选择
    TABLE_NAME,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
  来自INFORMATION_SCHEMA.TABLES
  WHERE table_schema =' db_name'
  [AND table_name LIKE' wild']

显示表状态
  来自db_name
  [LIKE' wild']

以下陈述是等效的:

选择
  TABLE_NAME,TABLE_TYPE
  来自INFORMATION_SCHEMA.TABLES
  WHERE table_schema =' db_name'
  [AND table_name LIKE' wild']

显示完整的表格
  来自db_name
  [LIKE' wild']

25.31 INFORMATION_SCHEMA TABLESPACES表

TABLESPACES 表提供有关活动MySQL Cluster表空间的信息。

TABLESPACES 表包含以下列:

  • TABLESPACE_NAME

    表空间的名称。

  • ENGINE

    使用表空间的存储引擎的名称。

  • TABLESPACE_TYPE

    表空间类型。

  • LOGFILE_GROUP_NAME

    分配给表空间的日志文件组的名称。

  • EXTENT_SIZE

    属于表空间的文件使用的扩展区的大小(以字节为单位)。

  • AUTOEXTEND_SIZE

    没用过。

  • MAXIMUM_SIZE

    没用过。

  • NODEGROUP_ID

    没用过。

  • TABLESPACE_COMMENT

    没用过。

笔记

  • TABLESPACES 表是一个非标准 INFORMATION_SCHEMA 表。

  • TABLESPACES 表未提供有关 InnoDB 表空间的 信息 有关 InnoDB 表空间元数据,请参阅 INFORMATION_SCHEMA INNODB_TABLESPACES INNODB_DATAFILES 表。 FILES 表还提供了 InnoDB 表空间的 元数据

25.32 INFORMATION_SCHEMA TABLE_CONSTRAINTS表

TABLE_CONSTRAINTS 表描述了哪些表具有约束。

TABLE_CONSTRAINTS 表包含以下列:

  • CONSTRAINT_CATALOG

    约束所属目录的名称。 这个值总是如此 def

  • CONSTRAINT_SCHEMA

    约束所属的模式(数据库)的名称。

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    表的名称。

  • CONSTRAINT_TYPE

    约束的类型。 该值可以是 UNIQUE PRIMARY KEY FOREIGN KEY ,或(如MySQL的8.0.16的) CHECK 这是一个 CHAR (非 ENUM )专栏。

    UNIQUE PRIMARY KEY 信息是一样的,你从一开始什么 Key_name 在输出列从 SHOW INDEX Non_unique 0

  • ENFORCED

    对于 CHECK 约束,值是 YES NO 表示是否强制执行约束。 对于其他约束,值始终为 YES

    此列已添加到MySQL 8.0.16中。

25.33 INFORMATION_SCHEMA TABLE_PRIVILEGES表

TABLE_PRIVILEGES 表提供有关表权限的信息。 它从 mysql.tables_priv 系统表中 获取其值

TABLE_PRIVILEGES 表包含以下列:

  • GRANTEE

    授予权限的帐户的名称, 格式为。 'user_name'@'host_name'

  • TABLE_CATALOG

    表所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    表所属的模式(数据库)的名称。

  • TABLE_NAME

    表的名称。

  • PRIVILEGE_TYPE

    授予的特权。 该值可以是可以在表级别授予的任何权限; 请参见 第13.7.1.6节“GRANT语法” 每行列出一个权限,因此被授权者拥有每个表权限一行。

  • IS_GRANTABLE

    YES 如果用户有 GRANT OPTION 权限, NO 否则。 输出未 GRANT OPTION 列为单独的行 PRIVILEGE_TYPE='GRANT OPTION'

笔记

以下陈述 相同:

SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES

显示奖学金......

25.34 INFORMATION_SCHEMA TRIGGERS表

TRIGGERS 表提供有关触发器的信息。 要查看有关表的触发器的信息,您必须具有 TRIGGER 该表 权限。

TRIGGERS 表包含以下列:

  • TRIGGER_CATALOG

    触发器所属目录的名称。 这个值总是如此 def

  • TRIGGER_SCHEMA

    触发器所属的架构(数据库)的名称。

  • TRIGGER_NAME

    触发器的名称。

  • EVENT_MANIPULATION

    触发事件。 这是触发器激活的关联表上的操作类型。 值为 INSERT (插入了一行), DELETE (删除了一行)或 UPDATE (一行被修改)。

  • EVENT_OBJECT_CATALOG EVENT_OBJECT_SCHEMA EVENT_OBJECT_TABLE

    第24.3节“使用触发器”中所述 ,每个触发器只与一个表相关联。 这些列分别表示此表所在的目录和模式(数据库)以及表名。 EVENT_OBJECT_CATALOG 值始终 def

  • ACTION_ORDER

    触发器操作的序号位置在同一个表上的触发器列表中具有相同的 EVENT_MANIPULATION ACTION_TIMING 值。

  • ACTION_CONDITION

    这个值总是如此 NULL

  • ACTION_STATEMENT

    触发体; 也就是说,触发器激活时执行的语句。 本文使用UTF-8编码。

  • ACTION_ORIENTATION

    这个值总是如此 ROW

  • ACTION_TIMING

    触发器在触发事件之前还是之后激活。 值是 BEFORE AFTER

  • ACTION_REFERENCE_OLD_TABLE

    这个值总是如此 NULL

  • ACTION_REFERENCE_NEW_TABLE

    这个值总是如此 NULL

  • ACTION_REFERENCE_OLD_ROW ACTION_REFERENCE_NEW_ROW

    分别是旧的和新的列标识符。 ACTION_REFERENCE_OLD_ROW 值总是 OLD ACTION_REFERENCE_NEW_ROW 值始终 NEW

  • CREATED

    创建触发器的日期和时间。 这是 TIMESTAMP(2) 触发器 值(以百分之几秒为单位)。

  • SQL_MODE

    创建触发器时生效的SQL模式,以及触发器执行的模式。 有关允许的值,请参见 第5.1.11节“服务器SQL模式”

  • DEFINER

    格式 创建触发器的用户的帐户 'user_name'@'host_name'

  • CHARACTER_SET_CLIENT

    character_set_client 创建触发器时系统变量 的会话值

  • COLLATION_CONNECTION

    collation_connection 创建触发器时系统变量 的会话值

  • DATABASE_COLLATION

    与触发器关联的数据库的排序规则。

以下示例使用 第24.3节“使用触发器”中 ins_sum 定义的 触发器

MySQL的> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
       WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1。排******************** *******
           TRIGGER_CATALOG:def
            TRIGGER_SCHEMA:测试
              TRIGGER_NAME:ins_sum
        EVENT_MANIPULATION:INSERT
      EVENT_OBJECT_CATALOG:def
       EVENT_OBJECT_SCHEMA:测试
        EVENT_OBJECT_TABLE:帐户
              ACTION_ORDER:1
          ACTION_CONDITION:NULL
          ACTION_STATEMENT:SET @sum = @sum + NEW.amount
        ACTION_ORIENTATION:行
             ACTION_TIMING:之前
ACTION_REFERENCE_OLD_TABLE:NULL
ACTION_REFERENCE_NEW_TABLE:NULL
  ACTION_REFERENCE_OLD_ROW:OLD
  ACTION_REFERENCE_NEW_ROW:新的
                   创建时间:2018-08-08 10:10:12.61
                  SQL_MODE:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,
                            NO_ZERO_IN_DATE,NO_ZERO_DATE,
                            ERROR_FOR_DIVISION_BY_ZERO,
                            NO_ENGINE_SUBSTITUTION
                   DEFINER:我@ localhost
      CHARACTER_SET_CLIENT:utf8mb4
      COLLATION_CONNECTION:utf8mb4_0900_ai_ci
        DATABASE_COLLATION:utf8mb4_0900_ai_ci

SHOW TRIGGERS 声明中 还提供了触发器信息 请参见 第13.7.6.38节“显示触发器语法”

25.35 INFORMATION_SCHEMA USER_PRIVILEGES表

USER_PRIVILEGES 表提供有关全局特权的信息。 它从 mysql.user 系统表中 获取其值

USER_PRIVILEGES 表包含以下列:

  • GRANTEE

    授予权限的帐户的名称, 格式为。 'user_name'@'host_name'

  • TABLE_CATALOG

    目录的名称。 这个值总是如此 def

  • PRIVILEGE_TYPE

    授予的特权。 该值可以是可在全局级别授予的任何特权; 请参见 第13.7.1.6节“GRANT语法” 每行列出一个权限,因此被授权者拥有的每个全局权限都有一行。

  • IS_GRANTABLE

    YES 如果用户有 GRANT OPTION 权限, NO 否则。 输出未 GRANT OPTION 列为单独的行 PRIVILEGE_TYPE='GRANT OPTION'

笔记

以下陈述 相同:

SELECT ... FROM INFORMATION_SCHEMA.USER_PRIVILEGES

显示奖学金......

25.36 INFORMATION_SCHEMA VIEWS表

VIEWS 表提供有关数据库中视图的信息。 您必须有权 SHOW VIEW 访问此表。

VIEWS 表包含以下列:

  • TABLE_CATALOG

    视图所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    视图所属的架构(数据库)的名称。

  • TABLE_NAME

    视图的名称。

  • VIEW_DEFINITION

    SELECT 提供该视图的定义语句。 此列包含您在 生成 Create Table 列中 看到的大部分内容 SHOW CREATE VIEW 在之前 SELECT 略过单词并跳过单词 WITH CHECK OPTION 假设原始陈述是:

    创建视图与AS
      SELECT s2,s1 FROM t
      在哪里s1> 5
      ORDER BY s1
      WITH CHECK OPTION;
    

    然后视图定义如下所示:

    SELECT s2,s1 FROM t WHERE s1> 5 ORDER BY s1
    
  • CHECK_OPTION

    CHECK_OPTION 属性 的值 值中的一个 NONE CASCADE LOCAL

  • IS_UPDATABLE

    MySQL在 CREATE VIEW 时间 设置了一个标志,称为视图可更新性标志 YES 如果 UPDATE DELETE (和类似操作)对视图合法,则 该标志设置为 (true) 否则,该标志设置为 NO (false)。 表中 IS_UPDATABLE VIEWS 显示此标志的状态。 这意味着服务器始终知道视图是否可更新。

    如果视图是不可更新的,这样的语句 UPDATE DELETE 以及 INSERT 是非法的,将被拒绝。 (即使视图是可更新的,也可能无法插入;有关详细信息,请参见 第24.5.3节“可更新和可插入视图” 。)

  • DEFINER

    格式 创建视图的用户的帐户 'user_name'@'host_name'

  • SECURITY_TYPE

    视图 SQL SECURITY 特征。 值是 DEFINER 或之一 INVOKER

  • CHARACTER_SET_CLIENT

    character_set_client 创建视图时系统变量 的会话值

  • COLLATION_CONNECTION

    collation_connection 创建视图时系统变量 的会话值

笔记

MySQL允许不同的 sql_mode 设置告诉服务器要支持的SQL语法的类型。 例如,您可以使用 ANSI SQL模式来确保MySQL || 在查询中 正确解释标准SQL连接运算符double bar( )。 如果您随后创建了一个连接项目的视图,您可能会担心将 sql_mode 设置 更改为 不同的值 ANSI 可能会导致视图无效。 但这种情况并非如此。 无论你如何编写视图定义,MySQL总是以规范的形式存储它。 下面是一个示例,显示服务器如何将双条串联运算符更改为 CONCAT() 函数:

MySQL的> SET sql_mode = 'ANSI';
查询正常,0行受影响(0.00秒)

MySQL的> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
查询正常,0行受影响(0.00秒)

MySQL的> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
       WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+ ---------------------------------- +
| VIEW_DEFINITION |
+ ---------------------------------- +
| 选择concat('a','b')AS`col1` |
+ ---------------------------------- +
1排(0.00秒)

以规范形式存储视图定义的优点是,稍后对值的更改 sql_mode 不会影响视图的结果。 但是,另一个后果是 SELECT 服务器从定义中删除 之前的注释

25.37 INFORMATION_SCHEMA VIEW_ROUTINE_USAGE表

VIEW_ROUTINE_USAGE 表(从MySQL 8.0.13开始提供)提供对视图定义中使用的存储函数的信息的访问。 该表未列出有关定义中使用的内置SQL函数或用户定义函数(UDF)的信息。

您只能查看您具有某些权限的视图的信息,并且仅针对您具有某些权限的函数。

VIEW_ROUTINE_USAGE 表包含以下列:

  • TABLE_CATALOG

    视图所属目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    视图所属的架构(数据库)的名称。

  • TABLE_NAME

    视图的名称。

  • SPECIFIC_CATALOG

    视图定义中使用的函数所属的目录的名称。 这个值总是如此 def

  • SPECIFIC_SCHEMA

    视图定义中使用的函数所属的模式(数据库)的名称。

  • SPECIFIC_NAME

    视图定义中使用的函数的名称。

25.38 INFORMATION_SCHEMA VIEW_TABLE_USAGE表

VIEW_TABLE_USAGE 表(从MySQL 8.0.13开始提供)提供对视图定义中使用的表和视图的信息的访问。

您只能查看您具有某些权限的视图的信息,并且仅针对您具有某些权限的表。

VIEW_TABLE_USAGE 表包含以下列:

  • VIEW_CATALOG

    视图所属目录的名称。 这个值总是如此 def

  • VIEW_SCHEMA

    视图所属的架构(数据库)的名称。

  • VIEW_NAME

    视图的名称。

  • TABLE_CATALOG

    视图定义中使用的表或视图所属的目录的名称。 这个值总是如此 def

  • TABLE_SCHEMA

    视图定义中使用的表或视图所属的模式(数据库)的名称。

  • TABLE_NAME

    视图定义中使用的表或视图的名称。

25.39 INFORMATION_SCHEMA InnoDB表

25.39.1 INFORMATION_SCHEMA INNODB_BUFFER_PAGE表
25.39.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU表
25.39.3 INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS表
25.39.4 INFORMATION_SCHEMA INNODB_CACHED_INDEXES表
25.39.5 INFORMATION_SCHEMA INNODB_CMP和INNODB_CMP_RESET表
25.39.6 INFORMATION_SCHEMA INNODB_CMPMEM和INNODB_CMPMEM_RESET表
25.39.7 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表
25.39.8 INFORMATION_SCHEMA INNODB_COLUMNS表
25.39.9 INFORMATION_SCHEMA INNODB_DATAFILES表
25.39.10 INFORMATION_SCHEMA INNODB_FIELDS表
25.39.11 INFORMATION_SCHEMA INNODB_FOREIGN表
25.39.12 INFORMATION_SCHEMA INNODB_FOREIGN_COLS表
25.39.13 INFORMATION_SCHEMA INNODB_FT_BEING_DELETED表
25.39.14 INFORMATION_SCHEMA INNODB_FT_CONFIG表
25.39.15 INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD表
25.39.16 INFORMATION_SCHEMA INNODB_FT_DELETED表
25.39.17 INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE表
25.39.18 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE表
25.39.19 INFORMATION_SCHEMA INNODB_INDEXES表
25.39.20 INFORMATION_SCHEMA INNODB_LOCKS表
25.39.21 INFORMATION_SCHEMA INNODB_LOCK_WAITS表
25.39.22 INFORMATION_SCHEMA INNODB_METRICS表
25.39.23 INFORMATION_SCHEMA INNODB_SESSION_TEMP_TABLESPACES表
25.39.24 INFORMATION_SCHEMA INNODB_TABLES表
25.39.25 INFORMATION_SCHEMA INNODB_TABLESPACES表
25.39.26 INFORMATION_SCHEMA INNODB_TABLESPACES_BRIEF表
25.39.27 INFORMATION_SCHEMA INNODB_TABLESTATS查看
25.39.28 INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO表
25.39.29 INFORMATION_SCHEMA INNODB_TRX表
25.39.30 INFORMATION_SCHEMA INNODB_VIRTUAL表

本节提供表的表定义 InnoDB INFORMATION_SCHEMA 有关相关信息和示例,请参见 第15.14节“InnoDB INFORMATION_SCHEMA表”

InnoDB INFORMATION_SCHEMA 表可用于监视正在进行的 InnoDB 活动,在问题发生之前检测低效率,或解决性能和容量问题。 随着您的数据库变得越来越大,越来越繁忙,在硬件容量的限制下运行,您可以监视和调整这些方面,以保持数据库平稳运行。

25.39.1 INFORMATION_SCHEMA INNODB_BUFFER_PAGE表

INNODB_BUFFER_PAGE 表列出了每个信息 InnoDB 缓冲池

有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表”

警告

查询 INNODB_BUFFER_PAGE 表可能会影响性能。 除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。 为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE 表包含以下列:

  • POOL_ID

    缓冲池ID。 这是区分多个缓冲池实例的标识符。

  • BLOCK_ID

    缓冲池块ID。

  • SPACE

    表空间ID; 与...相同的价值 INNODB_TABLES.SPACE

  • PAGE_NUMBER

    页码。

  • PAGE_TYPE

    页面类型。 下表显示了允许的值。

    表25.1 INNODB_BUFFER_PAGE.PAGE_TYPE值

    页面类型 描述
    ALLOCATED 新分配的页面
    BLOB 未压缩的BLOB页面
    COMPRESSED_BLOB2 后续comp BLOB页面
    COMPRESSED_BLOB 第一个压缩的BLOB页面
    ENCRYPTED_RTREE 加密的R树
    EXTENT_DESCRIPTOR 范围描述符页面
    FILE_SPACE_HEADER 文件空间标题
    FIL_PAGE_TYPE_UNUSED 没用过
    IBUF_BITMAP 插入缓冲区位图
    IBUF_FREE_LIST 插入缓冲区空闲列表
    IBUF_INDEX 插入缓冲区索引
    INDEX B树节点
    INODE 索引节点
    LOB_DATA 未压缩的LOB数据
    LOB_FIRST 未压缩LOB的第一页
    LOB_INDEX 未压缩的LOB索引
    PAGE_IO_COMPRESSED 压缩页面
    PAGE_IO_COMPRESSED_ENCRYPTED 压缩和加密页面
    PAGE_IO_ENCRYPTED 加密页面
    RSEG_ARRAY 回滚段数组
    RTREE_INDEX R树索引
    SDI_BLOB 未压缩的SDI BLOB
    SDI_COMPRESSED_BLOB 压缩的SDI BLOB
    SDI_INDEX SDI指数
    SYSTEM 系统页面
    TRX_SYSTEM 交易系统数据
    UNDO_LOG 撤消日志页面
    UNKNOWN 未知
    ZLOB_DATA 压缩的LOB数据
    ZLOB_FIRST 压缩LOB的第一页
    ZLOB_FRAG 压缩的LOB片段
    ZLOB_FRAG_ENTRY 压缩LOB片段索引
    ZLOB_INDEX 压缩LOB指数

  • FLUSH_TYPE

    冲洗类型。

  • FIX_COUNT

    缓冲池中使用此块的线程数。 当为零时,该区块有资格被驱逐。

  • IS_HASHED

    是否已在此页面上构建哈希索引。

  • NEWEST_MODIFICATION

    最新修改的日志序列号。

  • OLDEST_MODIFICATION

    最旧修改的日志序列号。

  • ACCESS_TIME

    用于判断页面首次访问时间的抽象数字。

  • TABLE_NAME

    页面所属表的名称。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • INDEX_NAME

    页面所属索引的名称。 这可以是聚簇索引或辅助索引的名称。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • NUMBER_RECORDS

    页面中的记录数。

  • DATA_SIZE

    记录大小的总和。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • COMPRESSED_SIZE

    压缩的页面大小。 NULL 对于未压缩的页面。

  • PAGE_STATE

    页面状态。 下表显示了允许的值。

    表25.2 INNODB_BUFFER_PAGE.PAGE_STATE值

    页面状态 描述
    FILE_PAGE 缓冲的文件页面
    MEMORY 包含主内存对象
    NOT_USED 在免费列表中
    NULL 清理压缩页面,刷新列表中的压缩页面,用作缓冲池监视标记的页面
    READY_FOR_USE 一个免费的页面
    REMOVE_HASH 在放入空闲列表之前应删除散列索引

  • IO_FIX

    此页面是否有任何I / O待处理: IO_NONE =没有挂起的I / O, IO_READ =读取挂起, IO_WRITE =写入挂起。

  • IS_OLD

    块是否在LRU列表中的旧块的子列表中。

  • FREE_PAGE_CLOCK

    freed_page_clock 当块最后放置在LRU列表的头部时 计数器 的值 freed_page_clock 计数器跟踪从LRU列表的末尾去除的块数。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE LIMIT 1\G
*************************** 1。排******************** *******
            POOL_ID:0
           BLOCK_ID:0
              空间:97
        PAGE_NUMBER:2473
          PAGE_TYPE:INDEX
         FLUSH_TYPE:1
          FIX_COUNT:0
          IS_HASHED:是的
NEWEST_MODIFICATION:733855581
OLDEST_MODIFICATION:0
        ACCESS_TIME:3378385672
         TABLE_NAME:`employees``salaries`
         INDEX_NAME:PRIMARY
     NUMBER_RECORDS:468
          DATA_SIZE:14976
    COMPRESSED_SIZE:0
         PAGE_STATE:FILE_PAGE
             IO_FIX:IO_NONE
             IS_OLD:是的
    FREE_PAGE_CLOCK:66

笔记

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

  • 删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。 INNODB_BUFFER_PAGE 表报告有关这些页面的信息,直到它们从缓冲池中逐出。 有关 InnoDB 管理缓冲池数据的 更多信息 ,请参见 第15.5.1节“缓冲池”

25.39.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU表

INNODB_BUFFER_PAGE_LRU 表提供有关 InnoDB 缓冲池中 页面的信息 ; 特别是,如何在LRU列表中对它们进行排序,以确定哪些页面 在缓冲池变满时从缓冲池中 逐出

INNODB_BUFFER_PAGE_LRU 表与表具有相同的列 INNODB_BUFFER_PAGE ,除了 INNODB_BUFFER_PAGE_LRU 表具有 LRU_POSITION COMPRESSED 列而不是 BLOCK_ID PAGE_STATE 列。

有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表”

警告

查询 INNODB_BUFFER_PAGE_LRU 表可能会影响性能。 除非您了解性能影响并确定其可接受,否则请勿在生产系统上查询此表。 为避免影响生产系统的性能,请重现要调查的问题并在测试实例上查询缓冲池统计信息。

INNODB_BUFFER_PAGE_LRU 表包含以下列:

  • POOL_ID

    缓冲池ID。 这是区分多个缓冲池实例的标识符。

  • LRU_POSITION

    页面在LRU列表中的位置。

  • SPACE

    表空间ID; 与...相同的价值 INNODB_TABLES.SPACE

  • PAGE_NUMBER

    页码。

  • PAGE_TYPE

    页面类型。 下表显示了允许的值。

    表25.3 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE值

    页面类型 描述
    ALLOCATED 新分配的页面
    BLOB 未压缩的BLOB页面
    COMPRESSED_BLOB2 后续comp BLOB页面
    COMPRESSED_BLOB 第一个压缩的BLOB页面
    ENCRYPTED_RTREE 加密的R树
    EXTENT_DESCRIPTOR 范围描述符页面
    FILE_SPACE_HEADER 文件空间标题
    FIL_PAGE_TYPE_UNUSED 没用过
    IBUF_BITMAP 插入缓冲区位图
    IBUF_FREE_LIST 插入缓冲区空闲列表
    IBUF_INDEX 插入缓冲区索引
    INDEX B树节点
    INODE 索引节点
    LOB_DATA 未压缩的LOB数据
    LOB_FIRST 未压缩LOB的第一页
    LOB_INDEX 未压缩的LOB索引
    PAGE_IO_COMPRESSED 压缩页面
    PAGE_IO_COMPRESSED_ENCRYPTED 压缩和加密页面
    PAGE_IO_ENCRYPTED 加密页面
    RSEG_ARRAY 回滚段数组
    RTREE_INDEX R树索引
    SDI_BLOB 未压缩的SDI BLOB
    SDI_COMPRESSED_BLOB 压缩的SDI BLOB
    SDI_INDEX SDI指数
    SYSTEM 系统页面
    TRX_SYSTEM 交易系统数据
    UNDO_LOG 撤消日志页面
    UNKNOWN 未知
    ZLOB_DATA 压缩的LOB数据
    ZLOB_FIRST 压缩LOB的第一页
    ZLOB_FRAG 压缩的LOB片段
    ZLOB_FRAG_ENTRY 压缩LOB片段索引
    ZLOB_INDEX 压缩LOB指数

  • FLUSH_TYPE

    冲洗类型。

  • FIX_COUNT

    缓冲池中使用此块的线程数。 当为零时,该区块有资格被驱逐。

  • IS_HASHED

    是否已在此页面上构建哈希索引。

  • NEWEST_MODIFICATION

    最新修改的日志序列号。

  • OLDEST_MODIFICATION

    最旧修改的日志序列号。

  • ACCESS_TIME

    用于判断页面首次访问时间的抽象数字。

  • TABLE_NAME

    页面所属表的名称。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • INDEX_NAME

    页面所属索引的名称。 这可以是聚簇索引或辅助索引的名称。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • NUMBER_RECORDS

    页面中的记录数。

  • DATA_SIZE

    记录大小的总和。 此列仅适用于 PAGE_TYPE 值为的 页面 INDEX

  • COMPRESSED_SIZE

    压缩的页面大小。 NULL 对于未压缩的页面。

  • COMPRESSED

    页面是否被压缩。

  • IO_FIX

    此页面是否有任何I / O待处理: IO_NONE =没有挂起的I / O, IO_READ =读取挂起, IO_WRITE =写入挂起。

  • IS_OLD

    块是否在LRU列表中的旧块的子列表中。

  • FREE_PAGE_CLOCK

    freed_page_clock 当块最后放置在LRU列表的头部时 计数器 的值 freed_page_clock 计数器跟踪从LRU列表的末尾去除的块数。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1。排******************** *******
            POOL_ID:0
       LRU_POSITION:0
              空间:97
        PAGE_NUMBER:1984
          PAGE_TYPE:INDEX
         FLUSH_TYPE:1
          FIX_COUNT:0
          IS_HASHED:是的
NEWEST_MODIFICATION:719490396
OLDEST_MODIFICATION:0
        ACCESS_TIME:3378383796
         TABLE_NAME:`employees``salaries`
         INDEX_NAME:PRIMARY
     NUMBER_RECORDS:468
          DATA_SIZE:14976
    COMPRESSED_SIZE:0
         压缩:没有
             IO_FIX:IO_NONE
             IS_OLD:是的
    FREE_PAGE_CLOCK:0

笔记

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

  • 查询此表可能需要MySQL分配大块连续内存,超过缓冲池中活动页数的64字节。 此分配可能会导致内存不足错误,尤其是对于具有多千兆字节缓冲池的系统。

  • 查询此表需要MySQL在遍历LRU列表时锁定表示缓冲池的数据结构,这会降低并发性,尤其是对于具有多GB缓冲池的系统。

  • 删除表,表行,分区或索引时,关联页将保留在缓冲池中,直到其他数据需要空间。 INNODB_BUFFER_PAGE_LRU 表报告有关这些页面的信息,直到它们从缓冲池中逐出。 有关 InnoDB 管理缓冲池数据的 更多信息 ,请参见 第15.5.1节“缓冲池”

25.39.3 INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS表

INNODB_BUFFER_POOL_STATS 表提供了 SHOW ENGINE INNODB STATUS 输出 中提供的大量相同的缓冲池信息 使用 InnoDB 缓冲池 服务器状态变量 也可以获得许多相同的信息

在缓冲池中创建页面 年轻 不年轻 的想法 是指 在缓冲池数据结构的头部和尾部 子列表 之间传送它们 年轻 ”的 页面 需要更长的时间才能从缓冲池中老化,而 不年轻 ”的 页面 会更加接近 驱逐

有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表”

INNODB_BUFFER_POOL_STATS 表包含以下列:

  • POOL_ID

    缓冲池ID。 这是区分多个缓冲池实例的标识符。

  • POOL_SIZE

    InnoDB 页面中 缓冲池大小。

  • FREE_BUFFERS

    InnoDB 缓冲池中 的空闲页数

  • DATABASE_PAGES

    InnoDB 包含数据 缓冲池中 的页数 此数字包括脏页面和干净页面。

  • OLD_DATABASE_PAGES

    old 缓冲池子列表中 的页数

  • MODIFIED_DATABASE_PAGES

    修改(脏)数据库页面的数量。

  • PENDING_DECOMPRESS

    待解压缩的页数。

  • PENDING_READS

    待处理读数。

  • PENDING_FLUSH_LRU

    LRU中待刷新的页数。

  • PENDING_FLUSH_LIST

    刷新列表中待刷新的页数。

  • PAGES_MADE_YOUNG

    年轻的页数。

  • PAGES_NOT_MADE_YOUNG

    不年轻的页数。

  • PAGES_MADE_YOUNG_RATE

    每秒生成的页数(自上次打印输出/时间过后页面变得年轻)。

  • PAGES_MADE_NOT_YOUNG_RATE

    每秒未生成的页数(自上次打印输出/经过时间以来未打印的页数)。

  • NUMBER_PAGES_READ

    读取的页数。

  • NUMBER_PAGES_CREATED

    创建的页数。

  • NUMBER_PAGES_WRITTEN

    写的页数。

  • PAGES_READ_RATE

    每秒读取的页数(自上次打印输出/经过时间以来读取的页数)。

  • PAGES_CREATE_RATE

    每秒创建的页数(自上次打印输出/时间过后创建的页数)。

  • PAGES_WRITTEN_RATE

    每秒写入的页数(自上次打印输出/经过时间以来写入的页数)。

  • NUMBER_PAGES_GET

    逻辑读取请求的数量。

  • HIT_RATE

    缓冲池命中率。

  • YOUNG_MAKE_PER_THOUSAND_GETS

    每千人年轻人获得的页数。

  • NOT_YOUNG_MAKE_PER_THOUSAND_GETS

    千分之一的页数不是千分之一。

  • NUMBER_PAGES_READ_AHEAD

    提前读取的页数。

  • NUMBER_READ_AHEAD_EVICTED

    InnoDB 由预读后台线程 读入 缓冲池 的页面数,这些页面 随后在没有被查询访问的情况下被逐出。

  • READ_AHEAD_RATE

    每秒预读速率(自上次打印输出/经过时间以来预读的页数)。

  • READ_AHEAD_EVICTED_RATE

    每秒不访问的预读页数(自上次打印输出/时间过后未读取的预读页)。

  • LRU_IO_TOTAL

    总LRU I / O.

  • LRU_IO_CURRENT

    当前间隔的LRU I / O.

  • UNCOMPRESS_TOTAL

    解压缩的总页数。

  • UNCOMPRESS_CURRENT

    在当前间隔中解压缩的页数。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_POOL_STATS\G
*************************** 1。排******************** *******
                         POOL_ID:0
                       POOL_SIZE:8192
                    FREE_BUFFERS:1
                  DATABASE_PAGES:8085
              OLD_DATABASE_PAGES:2964
         MODIFIED_DATABASE_PAGES:0
              PENDING_DECOMPRESS:0
                   PENDING_READS:0
               PENDING_FLUSH_LRU:0
              PENDING_FLUSH_LIST:0
                PAGES_MADE_YOUNG:22821
            PAGES_NOT_MADE_YOUNG:3544303
           PAGES_MADE_YOUNG_RATE:357.62602199870594
       PAGES_MADE_NOT_YOUNG_RATE:0
               NUMBER_PAGES_READ:2389
            NUMBER_PAGES_CREATED:12385
            NUMBER_PAGES_WRITTEN:13111
                 PAGES_READ_RATE:0
               PAGES_CREATE_RATE:0
              PAGES_WRITTEN_RATE:0
                NUMBER_PAGES_GET:33322210
                        HIT_RATE:1000
    YOUNG_MAKE_PER_THOUSAND_GETS:18
NOT_YOUNG_MAKE_PER_THOUSAND_GETS:0
         NUMBER_PAGES_READ_AHEAD:2024
       NUMBER_READ_AHEAD_EVICTED:0
                 READ_AHEAD_RATE:0
         READ_AHEAD_EVICTED_RATE:0
                    LRU_IO_TOTAL:0
                  LRU_IO_CURRENT:0
                UNCOMPRESS_TOTAL:0
              UNCOMPRESS_CURRENT:0

笔记

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.4 INFORMATION_SCHEMA INNODB_CACHED_INDEXES表

INNODB_CACHED_INDEXES 表报告 InnoDB 每个索引缓冲池中 缓存的索引页数

有关相关用法信息和示例,请参见 第15.14.5节“InnoDB INFORMATION_SCHEMA缓冲池表”

INNODB_CACHED_INDEXES 表包含以下列:

  • SPACE_ID

    表空间ID。

  • INDEX_ID

    索引的标识符。 索引标识符在实例中的所有数据库中都是唯一的。

  • N_CACHED_PAGES

    InnoDB 缓冲池中 缓存的索引页数

例子

此查询返回 InnoDB 缓冲池中 缓存 的特定索引 的索引页数

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CACHED_INDEXES WHERE INDEX_ID=65\G
*************************** 1。排******************** *******
      SPACE_ID:4294967294
      INDEX_ID:65
N_CACHED_PAGES:45

此查询返回 InnoDB 缓冲池中为每个索引 缓存的索引页数 ,使用 INNODB_INDEXES INNODB_TABLES 表来解析每个 INDEX_ID 的表名和索引名

选择
  tables.NAME AS table_name,
  indexes.NAME AS index_name,
  cached.N_CACHED_PAGES AS n_cached_pa​​ges
  INFORMATION_SCHEMA.INNODB_CACHED_INDEXES作为缓存,
  INFORMATION_SCHEMA.INNODB_INDEXES AS索引,
  INFORMATION_SCHEMA.INNODB_TABLES AS表
哪里
  cached.INDEX_ID = indexes.INDEX_ID
  AND indexes.TABLE_ID = tables.TABLE_ID;

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.5 INFORMATION_SCHEMA INNODB_CMP和INNODB_CMP_RESET表

INNODB_CMP INNODB_CMP_RESET 表提供了相关的操作状态信息 压缩 InnoDB 表。

INNODB_CMP INNODB_CMP_RESET 表有这些列:

  • PAGE_SIZE

    压缩页面大小,以字节为单位。

  • COMPRESS_OPS

    PAGE_SIZE 压缩 了B树页面大小的次数 只要创建空页面或未压缩修改日志的空间用完,页面就会被压缩。

  • COMPRESS_OPS_OK

    PAGE_SIZE 已成功压缩 B树页面大小的次数 此计数不应超过 COMPRESS_OPS

  • COMPRESS_TIME

    用于尝试压缩大小的B树页面的总时间(以秒为单位) PAGE_SIZE

  • UNCOMPRESS_OPS

    B-tree页面大小 PAGE_SIZE 未压缩的次数。 压缩失败时或在缓冲池中不存在未压缩页面时首次访问时,B树页面将被解压缩。

  • UNCOMPRESS_TIME

    用于解压缩大小的B树页面的总时间(以秒为单位) PAGE_SIZE

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP\G
*************************** 1。排******************** *******
      page_size:1024
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:0
uncompress_time:0
*************************** 2.排******************** *******
      page_size:2048
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:0
uncompress_time:0
*************************** 3。排******************** *******
      page_size:4096
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:0
uncompress_time:0
****************************排******************** *******
      page_size:8192
   compress_ops:86955
compress_ops_ok:81182
  compress_time:27
 uncompress_ops:26828
uncompress_time:5
****************************排******************** *******
      page_size:16384
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:0
uncompress_time:0

笔记

25.39.6 INFORMATION_SCHEMA INNODB_CMPMEM和INNODB_CMPMEM_RESET表

INNODB_CMPMEM INNODB_CMPMEM_RESET 上压缩表提供状态信息 的内 InnoDB 缓冲池

INNODB_CMPMEM INNODB_CMPMEM_RESET 表有这些列:

  • PAGE_SIZE

    块大小(以字节为单位)。 该表的每条记录都描述了这种大小的块。

  • BUFFER_POOL_INSTANCE

    缓冲池实例的唯一标识符。

  • PAGES_USED

    PAGE_SIZE 当前正在使用 的块大小的数量

  • PAGES_FREE

    PAGE_SIZE 当前可用于分配 的大小块数 此列显示内存池中的外部碎片。 理想情况下,这些数字最多应为1。

  • RELOCATION_OPS

    PAGE_SIZE 已重新定位 块大小的次数 伙伴系统 在尝试形成更大的释放块时 可以重新定位已 释放块 的已分配 伙伴邻居 INNODB_CMPMEM_RESET 表中 读取 重置此计数。

  • RELOCATION_TIME

    用于重新定位大小块的总时间(以微秒为单位) PAGE_SIZE 从表中读取 INNODB_CMPMEM_RESET 重置此计数。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMPMEM\G
*************************** 1。排******************** *******
           page_size:1024
buffer_pool_instance:0
          pages_used:0
          pages_free:0
      relocation_ops:0
     relocation_time:0
*************************** 2.排******************** *******
           page_size:2048
buffer_pool_instance:0
          pages_used:0
          pages_free:0
      relocation_ops:0
     relocation_time:0
*************************** 3。排******************** *******
           page_size:4096
buffer_pool_instance:0
          pages_used:0
          pages_free:0
      relocation_ops:0
     relocation_time:0
****************************排******************** *******
           page_size:8192
buffer_pool_instance:0
          pages_used:7673
          pages_free:15
      relocation_ops:4638
     relocation_time:0
****************************排******************** *******
           page_size:16384
buffer_pool_instance:0
          pages_used:0
          pages_free:0
      relocation_ops:0
     relocation_time:0

笔记

25.39.7 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表

INNODB_CMP_PER_INDEX INNODB_CMP_PER_INDEX_RESET 表提供了相关的操作状态信息 压缩 InnoDB 表和索引,与数据库,表和索引的每个组合单独的统计数据,以帮助您评估特定表的性能和压缩的实用性。

对于压缩 InnoDB 表, 将压缩 表数据和所有 二级索引 在此上下文中,表数据仅被视为另一个索引,恰好包含所有列: 聚簇索引

INNODB_CMP_PER_INDEX INNODB_CMP_PER_INDEX_RESET 表有这些列:

  • DATABASE_NAME

    包含适用表的模式(数据库)。

  • TABLE_NAME

    用于监视压缩统计信息的表。

  • INDEX_NAME

    用于监视压缩统计信息的索引。

  • COMPRESS_OPS

    尝试的压缩操作数。 网页 每当创建一个空的页面或压缩未压缩修改日志的空间用完。

  • COMPRESS_OPS_OK

    成功压缩操作的次数。 减去该 COMPRESS_OPS 值以获得 压缩失败次数 除以该 COMPRESS_OPS 值以获得压缩失败的百分比。

  • COMPRESS_TIME

    用于压缩此索引中的数据的总时间(以秒为单位)。

  • UNCOMPRESS_OPS

    执行的解压缩操作数。 压缩的 InnoDB 网页未压缩的压缩时 出现故障 ,或者在第一时间压缩页面的访问 缓冲池 和未压缩的页面不存在。

  • UNCOMPRESS_TIME

    用于解压缩此索引中的数据的总时间(以秒为单位)。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_CMP_PER_INDEX\G
*************************** 1。排******************** *******
  database_name:员工
     table_name:工资
     index_name:PRIMARY
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:23451
uncompress_time:4
*************************** 2.排******************** *******
  database_name:员工
     table_name:工资
     index_name:emp_no
   compress_ops:0
compress_ops_ok:0
  compress_time:0
 uncompress_ops:1597
uncompress_time:0

笔记

25.39.8 INFORMATION_SCHEMA INNODB_COLUMNS表

INNODB_COLUMNS 表提供了有关的元数据 InnoDB 表列的

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_COLUMNS 表包含以下列:

  • TABLE_ID

    表示与列关联的表的标识符; 与...相同的价值 INNODB_TABLES.TABLE_ID

  • NAME

    列的名称。 这些名称可以是大写或小写,具体取决于 lower_case_table_names 设置。 列没有特殊的系统保留名称。

  • POS

    表中列的序号位置,从0开始并按顺序递增。 删除列时,将重新排序其余列,以使序列没有间隙。 POS 虚拟生成列 值对列序列号和列的序号位置进行编码。 有关更多信息,请参见 第25.39.30节“INFORMATION_SCHEMA INNODB_VIRTUAL表”中 POS 列说明

  • MTYPE

    代表 主要类型 列类型的数字标识符。 1 = VARCHAR ,2 = CHAR ,3 = FIXBINARY ,4 = BINARY ,5 = BLOB ,6 = INT ,7 = SYS_CHILD ,8 = SYS ,9 = FLOAT ,10 = DOUBLE ,11 = DECIMAL ,12 = VARMYSQL ,13 = MYSQL ,14 = GEOMETRY

  • PRTYPE

    InnoDB 精确类型 ,与表示MySQL数据类型,字符集代码,和为空比特的二进制值。

  • LEN

    列长度​​,例如4 for INT 和8 for BIGINT 对于多字节字符集中的字符列,此长度值是表示定义所需的最大字节长度,例如 ; 也就是说,它可能是 依此类推,具体取决于字符编码。 VARCHAR(N) 2*N 3*N

  • HAS_DEFAULT

    一个布尔值,指示使用 ALTER TABLE ... ADD COLUMN with 立即添加的列是否 ALGORITHM=INSTANT 具有默认值。 立即添加的所有列都具有默认值,这使得此列成为是否立即添加列的指示。

  • DEFAULT_VALUE

    使用 ALTER TABLE ... ADD COLUMN with 立即添加的列的初始默认值 ALGORITHM=INSTANT 如果 NULL 指定了或未指定 默认值 ,则此列将报告 NULL 明确指定的非 NULL 默认值以内部二进制格式显示。 对列默认值的后续修改不会更改此列报告的值。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS where TABLE_ID = 71\G
*************************** 1。排******************** *******
     TABLE_ID:71
         名称:col1
          POS:0
        MTYPE:6
       PRTYPE:1027
          LEN:4
  HAS_DEFAULT:0
DEFAULT_VALUE:NULL
*************************** 2.排******************** *******
     TABLE_ID:71
         名称:col2
          POS:1
        MTYPE:2
       PRTYPE:524542
          LEN:10
  HAS_DEFAULT:0
DEFAULT_VALUE:NULL
*************************** 3。排******************** *******
     TABLE_ID:71
         名称:col3
          POS:2
        MTYPE:1
       PRTYPE:524303
          LEN:10
  HAS_DEFAULT:0
DEFAULT_VALUE:NULL

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.9 INFORMATION_SCHEMA INNODB_DATAFILES表

INNODB_DATAFILES 表提供了 InnoDB 每个表文件和一般表空间的 数据文件路径信息

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

注意

INFORMATION_SCHEMA FILES 表报告 InnoDB 表空间类型的 元数据, 包括每表文件表空间,通用表空间,系统表空间,全局临时表空间和撤消表空间。

INNODB_DATAFILES 表包含以下列:

  • SPACE

    表空间ID。

  • PATH

    表空间数据文件路径。 如果 在MySQL数据目录之外的位置创建了 每表文件表 空间,则路径值是完全限定的目录路径。 否则,该路径相对于数据目录。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_DATAFILES WHERE SPACE = 57\G
*************************** 1。排******************** *******
空间:57
 路径:./ test / t1.ibd

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.10 INFORMATION_SCHEMA INNODB_FIELDS表

INNODB_FIELDS 表提供有关 InnoDB 索引 的键列(字段)的元数据

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_FIELDS 表包含以下列:

  • INDEX_ID

    与此键字段关联的索引的标识符; 与...相同的价值 INNODB_INDEXES.INDEX_ID

  • NAME

    表中原始列的名称; 与...相同的价值 INNODB_COLUMNS.NAME

  • POS

    索引中键字段的序号位置,从0开始并按顺序递增。 删除列时,将重新排序其余列,以使序列没有间隙。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FIELDS WHERE INDEX_ID = 117\G
*************************** 1。排******************** *******
INDEX_ID:117
    名称:col1
     POS:0

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.11 INFORMATION_SCHEMA INNODB_FOREIGN表

INNODB_FOREIGN 表提供有关 InnoDB 外键的 元数据

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_FOREIGN 表包含以下列:

  • ID

    外键索引的名称(不是数字值),以模式(数据库)名称开头(例如 test/products_fk )。

  • FOR_NAME

    此外 键关系 中子表 的名称

  • REF_NAME

    此外 键关系中 父表 的名称

  • N_COLS

    外键索引中的列数。

  • TYPE

    包含有关外键列的信息的位标志的集合,ORed在一起。 0 = ON DELETE/UPDATE RESTRICT ,1 = ON DELETE CASCADE ,2 = ON DELETE SET NULL ,4 = ON UPDATE CASCADE ,8 = ON UPDATE SET NULL ,16 = ON DELETE NO ACTION ,32 = ON UPDATE NO ACTION

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FOREIGN\G
*************************** 1。排******************** *******
      ID:test / fk1
FOR_NAME:测试/孩子
REF_NAME:测试/家长
  N_COLS:1
    类型:1

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.12 INFORMATION_SCHEMA INNODB_FOREIGN_COLS表

INNODB_FOREIGN_COLS 表提供有关的状态信息 InnoDB 外键列的

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_FOREIGN_COLS 表包含以下列:

  • ID

    与此索引键字段关联的外键索引; 与...相同的价值 INNODB_FOREIGN.ID

  • FOR_COL_NAME

    子表中关联列的名称。

  • REF_COL_NAME

    父表中关联列的名称。

  • POS

    外键索引中此键字段的序号位置,从0开始。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FOREIGN_COLS WHERE ID = 'test/fk1'\G
*************************** 1。排******************** *******
          ID:test / fk1
FOR_COL_NAME:parent_id
REF_COL_NAME:id
         POS:0

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.13 INFORMATION_SCHEMA INNODB_FT_BEING_DELETED表

INNODB_FT_BEING_DELETED 表提供了表的快照 INNODB_FT_DELETED ; 它仅在 OPTIMIZE TABLE 维护操作 期间 使用。 OPTIMIZE TABLE 运行时,该 INNODB_FT_BEING_DELETED 表被清空,并且 DOC_ID 值是从除去 INNODB_FT_DELETED 表。 由于内容 INNODB_FT_BEING_DELETED 通常具有较短的生命周期,因此该表对监视或调试的实用性有限。 有关 OPTIMIZE TABLE 在带有 FULLTEXT 索引的 表上 运行的信息 ,请参见 第12.9.6节“微调MySQL全文搜索”

这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。 输出类似于为 INNODB_FT_DELETED 提供的示例

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_BEING_DELETED 表包含以下列:

  • DOC_ID

    正在删除的行的文档ID。 此值可能反映您为基础表定义的ID列的值,也可能是 InnoDB 表中没有合适的列时 生成的序列值 执行文本搜索时,将使用此值,以便在 通过 语句 INNODB_FT_INDEX_TABLE FULLTEXT 索引中 物理删除已删除行的数据之前 跳过 表中的行 OPTIMIZE TABLE 有关更多信息,请参阅 优化InnoDB全文索引

笔记

25.39.14 INFORMATION_SCHEMA INNODB_FT_CONFIG表

INNODB_FT_CONFIG 表提供有关表的 FULLTEXT 索引和关联处理的 元数据 InnoDB

这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_CONFIG 表包含以下列:

  • KEY

    指定 InnoDB 包含 FULLTEXT 索引 的元数据项的名称

    此列的值可能会更改,具体取决于性能调整和 InnoDB 全文处理 调试的需要 关键名称及其含义包括:

    • optimize_checkpoint_limit OPTIMIZE TABLE 运行停止 的秒数

    • synced_doc_id :下一个 DOC_ID 要发行。

    • stopword_table_name database/table 用户定义的停用词表的名称。 VALUE 如果没有用户定义的停用词表,则 列为空。

    • use_stopword :指示是否使用停用词表,该表是在 FULLTEXT 创建索引 时定义的

  • VALUE

    与相应 KEY 关联的值 ,反映 FULLTEXT 索引 方面的某些限制或当前值 InnoDB

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+ --------------------------- + ------------------- +
| KEY | 价值|
+ --------------------------- + ------------------- +
| optimize_checkpoint_limit | 180 |
| synced_doc_id | 0 |
| stopword_table_name | test / my_stopwords |
| use_stopword | 1 |
+ --------------------------- + ------------------- +

笔记

25.39.15 INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD表

INNODB_FT_DEFAULT_STOPWORD 表包含 创建 索引 时默认使用 停用词 列表 有关默认 禁用 词列表以及如何定义自己的 禁用 词列表的信息,请参见 第12.9.4节“全文 停用词 FULLTEXT InnoDB InnoDB

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_DEFAULT_STOPWORD 表包含以下列:

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+ ------- +
| 价值|
+ ------- +
| a |
| 关于|
| 一个|
| 是|
| 作为|
| 在|
| 是|
| 通过|
| com |
| 德|
| en |
| 为|
| 来自|
| 如何|
| 我|
| 在|
| 是|
| 它|
| la |
| 
| 在|
| 或者
| 那个|
| |
| 这个|
| 到|
| 是|
| 什么|
| 当|
| 哪里|
| 谁|
| 将|
| 与|
| und |
| |
| www |
+ ------- +
36行(0.00秒)

笔记

25.39.16 INFORMATION_SCHEMA INNODB_FT_DELETED表

INNODB_FT_DELETED 表存储从 FULLTEXT 索引 中删除的行 InnoDB 为了避免在索引的DML操作期间进行昂贵的索引重组 InnoDB FULLTEXT ,有关新删除的单词的信息将单独存储,在执行文本搜索时从搜索结果中过滤掉,并且仅在您 OPTIMIZE TABLE InnoDB 发出 语句 时从主搜索索引中删除 有关更多信息,请参阅 优化InnoDB全文索引

这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_DELETED 表包含以下列:

  • DOC_ID

    新删除的行的文档ID。 此值可能反映您为基础表定义的ID列的值,也可能是 InnoDB 表中没有合适的列时 生成的序列值 执行文本搜索时,将使用此值,以便在 通过 语句 INNODB_FT_INDEX_TABLE FULLTEXT 索引中 物理删除已删除行的数据之前 跳过 表中的行 OPTIMIZE TABLE 有关更多信息,请参阅 优化InnoDB全文索引

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DELETED;
+ -------- +
| DOC_ID |
+ -------- +
| 6 |
| 7 |
| 8 |
+ -------- +

笔记

25.39.17 INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE表

INNODB_FT_INDEX_CACHE 表提供有关 FULLTEXT 索引中 新插入行的标记信息 为了避免在DML操作期间进行昂贵的索引重组,有关新索引词的信息将单独存储,并且仅在 OPTIMIZE TABLE 运行时,服务器关闭时或者当缓存大小超过由 innodb_ft_cache_size 定义的限制时 与主搜索索引组合。 innodb_ft_total_cache_size 系统变量。

这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_INDEX_CACHE 表包含以下列:

  • WORD

    从新插入的行的文本中提取的单词。

  • FIRST_DOC_ID

    此单词出现在 FULLTEXT 索引中 的第一个文档ID

  • LAST_DOC_ID

    此单词出现在 FULLTEXT 索引中 的最后一个文档ID

  • DOC_COUNT

    此单词在 FULLTEXT 索引中 出现的行数 在缓存表中可以多次出现相同的单词,每个组合 DOC_ID POSITION 值一次。

  • DOC_ID

    新插入行的文档ID。 此值可能反映您为基础表定义的ID列的值,也可能是 InnoDB 表中没有合适的列时 生成的序列值

  • POSITION

    该值的特定实例在相关文档中的位置由该 DOC_ID 标识 该值不代表绝对位置; 它是添加到该 POSITION 单词的上一个实例 的偏移量

笔记

  • 这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如 test/articles )。 以下示例演示如何使用 innodb_ft_aux_table 系统变量显示有关 FULLTEXT 指定表 索引的 信息

    MySQL的> USE test;
    
    MySQL的> CREATE TABLE articles (
             id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
             title VARCHAR(200),
             body TEXT,
             FULLTEXT (title,body)
           ) ENGINE=InnoDB;
    
    MySQL的> INSERT INTO articles (title,body) VALUES
           ('MySQL Tutorial','DBMS stands for DataBase ...'),
           ('How To Use MySQL Well','After you went through a ...'),
           ('Optimizing MySQL','In this tutorial we will show ...'),
           ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
           ('MySQL vs. YourSQL','In the following database comparison ...'),
           ('MySQL Security','When configured properly, MySQL ...');
    
    MySQL的> SET GLOBAL innodb_ft_aux_table = 'test/articles';
    
    MySQL的> SELECT WORD, DOC_COUNT, DOC_ID, POSITION
           FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_CACHE LIMIT 5;
    + ------------ + ----------- + -------- + ---------- +
    | WORD | DOC_COUNT | DOC_ID | 位置|
    + ------------ + ----------- + -------- + ---------- +
    | 1001 | 1 | 4 | 0 |
    | 之后| 1 | 2 | 22 |
    | 比较| 1 | 5 | 44 |
    | 配置| 1 | 6 | 20 |
    | 数据库| 2 | 1 | 31 |
    + ------------ + ----------- + -------- + ---------- +
    
  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

  • 有关 InnoDB FULLTEXT 搜索的 更多信息 ,请参见 第15.6.2.4节“InnoDB FULLTEXT索引” 第12.9节“全文搜索函数”

25.39.18 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE表

INNODB_FT_INDEX_TABLE 表提供有关用于处理针对 FULLTEXT 索引的 文本搜索的反向索引的信息 InnoDB

这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。

有关相关用法信息和示例,请参见 第15.14.4节“InnoDB INFORMATION_SCHEMA FULLTEXT索引表”

INNODB_FT_INDEX_TABLE 表包含以下列:

  • WORD

    从作为a的一部分的列的文本中提取的单词 FULLTEXT

  • FIRST_DOC_ID

    此单词出现在 FULLTEXT 索引中 的第一个文档ID

  • LAST_DOC_ID

    此单词出现在 FULLTEXT 索引中 的最后一个文档ID

  • DOC_COUNT

    此单词在 FULLTEXT 索引中 出现的行数 在缓存表中可以多次出现相同的单词,每个组合 DOC_ID POSITION 值一次。

  • DOC_ID

    包含单词的行的文档ID。 此值可能反映您为基础表定义的ID列的值,也可能是 InnoDB 表中没有合适的列时 生成的序列值

  • POSITION

    该值的特定实例在相关文档中的位置由该 DOC_ID 标识

笔记

  • 这个表最初是空的。 在查询之前,将 innodb_ft_aux_table 系统变量 的值设置为 包含 FULLTEXT 索引 的表的名称(包括数据库名称) (例如, test/articles )。 以下示例演示如何使用 innodb_ft_aux_table 系统变量显示有关 FULLTEXT 指定表 索引的 信息 在出现新插入行的信息之前 INNODB_FT_INDEX_TABLE FULLTEXT 必须将索引缓存刷新到磁盘。 这是通过 OPTIMIZE TABLE 在索引表上 运行 操作 来完成 innodb_optimize_fulltext_only 系统变量已启用。 (该示例最后再次禁用该变量,因为它只是暂时启用。)

    MySQL的> USE test;
    
    MySQL的> CREATE TABLE articles (
             id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
             title VARCHAR(200),
             body TEXT,
             FULLTEXT (title,body)
           ) ENGINE=InnoDB;
    
    MySQL的> INSERT INTO articles (title,body) VALUES
           ('MySQL Tutorial','DBMS stands for DataBase ...'),
           ('How To Use MySQL Well','After you went through a ...'),
           ('Optimizing MySQL','In this tutorial we will show ...'),
           ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),
           ('MySQL vs. YourSQL','In the following database comparison ...'),
           ('MySQL Security','When configured properly, MySQL ...');
    
    MySQL的> SET GLOBAL innodb_optimize_fulltext_only=ON;
    
    MySQL的> OPTIMIZE TABLE articles;
    + --------------- + ---------- + ---------- + ---------- +
    | 表| Op | Msg_type | Msg_text |
    + --------------- + ---------- + ---------- + ---------- +
    | test.articles | 优化| 状态| 好的
    + --------------- + ---------- + ---------- + ---------- +
    
    MySQL的> SET GLOBAL innodb_ft_aux_table = 'test/articles';
    
    MySQL的> SELECT WORD, DOC_COUNT, DOC_ID, POSITION
           FROM INFORMATION_SCHEMA.INNODB_FT_INDEX_TABLE LIMIT 5;
    + ------------ + ----------- + -------- + ---------- +
    | WORD | DOC_COUNT | DOC_ID | 位置|
    + ------------ + ----------- + -------- + ---------- +
    | 1001 | 1 | 4 | 0 |
    | 之后| 1 | 2 | 22 |
    | 比较| 1 | 5 | 44 |
    | 配置| 1 | 6 | 20 |
    | 数据库| 2 | 1 | 31 |
    + ------------ + ----------- + -------- + ---------- +
    
    MySQL的> SET GLOBAL innodb_optimize_fulltext_only=OFF;
    
  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

  • 有关 InnoDB FULLTEXT 搜索的 更多信息 ,请参见 第15.6.2.4节“InnoDB FULLTEXT索引” 第12.9节“全文搜索函数”

25.39.19 INFORMATION_SCHEMA INNODB_INDEXES表

INNODB_INDEXES 表提供有关 InnoDB 索引的 元数据

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_INDEXES 表包含以下列:

  • INDEX_ID

    索引的标识符。 索引标识符在实例中的所有数据库中都是唯一的。

  • NAME

    索引的名称。 通过 InnoDB 具有一致名称 隐式创建的大多数索引, 但索引名称不一定是唯一的。 实施例: PRIMARY 用于一主键索引, GEN_CLUST_INDEX 用于表示当没有指定的主键索引,并且 ID_IND FOR_IND REF_IND 为外键约束。

  • TABLE_ID

    表示与索引关联的表的标识符; 与...相同的价值 INNODB_TABLES.TABLE_ID

  • TYPE

    从标识索引类型的位级信息派生的数值。 0 =非唯一二级指数; 1 =自动生成聚簇索引( GEN_CLUST_INDEX ); 2 =唯一的非聚集索引; 3 =聚集索引; 32 =全文索引; 64 =空间指数; 128 = 虚拟生成列 上的辅助索引

  • N_FIELDS

    索引键中的列数。 对于 GEN_CLUST_INDEX 索引,此值为0,因为索引是使用人工值而不是实际表列创建的。

  • PAGE_NO

    索引B树的根页码。 对于全文索引,该 PAGE_NO 列未使用并设置为-1( FIL_NULL ),因为全文索引在多个B树(辅助表)中布局。

  • SPACE

    索引所在的表空间的标识符。 0表示 InnoDB 系统表空间 任何其他数字表示使用 文件每表 模式中 的单独 .ibd 文件 创建 的表 TRUNCATE TABLE 声明 后,此标识符保持不变 由于表的所有索引都与表存在于同一个表空间中,因此该值不一定是唯一的。

  • MERGE_THRESHOLD

    索引页面的合并阈值。 如果索引页中的数据量低于 MERGE_THRESHOLD 删除行时或更新操作缩短行时 值,则 InnoDB 尝试将索引页与相邻索引页合并。 默认阈值为50%。 有关更多信息,请参见 第15.8.11节“配置索引页的合并阈值”

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEXES WHERE TABLE_ID = 34\G
*************************** 1。排******************** *******
       INDEX_ID:39
           名称:GEN_CLUST_INDEX
       TABLE_ID:34
           类型:1
       N_FIELDS:0
        PAGE_NO:3
          空间:23
MERGE_THRESHOLD:50
*************************** 2.排******************** *******
       INDEX_ID:40
           姓名:i1
       TABLE_ID:34
           TYPE:0
       N_FIELDS:1
        PAGE_NO:4
          空间:23
MERGE_THRESHOLD:50

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.20 INFORMATION_SCHEMA INNODB_LOCKS表

INNODB_LOCKS 表提供有关 InnoDB 事务已请求但尚未获取的每个锁的信息,以及事务持有的阻止另一个事务的每个锁。

注意

该表已弃用,自MySQL 8.0.1起删除。 请改用Performance Schema data_locks 表。 请参见 第26.12.12.1节“data_locks表”

INNODB_LOCKS 之间的差异 data_locks

  • 如果事务持有锁, INNODB_LOCKS 则仅在另一个事务正在等待时才显示锁。 data_locks 无论是否有任何事务正在等待它,都会显示锁定。

  • data_locks 表具有对应于没有列 LOCK_SPACE LOCK_PAGE LOCK_REC

  • INNODB_LOCKS 表需要全局 PROCESS 特权。 data_locks 表需要 SELECT 从表中选择 通常的Performance Schema特权

下表显示了从 INNODB_LOCKS 列到 data_locks 的映射 使用此信息将应用程序从一个表迁移到另一个表。

表25.4从INNODB_LOCKS到data_locks列的映射

INNODB_LOCKS专栏 data_locks列
LOCK_ID ENGINE_LOCK_ID
LOCK_TRX_ID ENGINE_TRANSACTION_ID
LOCK_MODE LOCK_MODE
LOCK_TYPE LOCK_TYPE
LOCK_TABLE (组合模式/表名) OBJECT_SCHEMA (模式名称), OBJECT_NAME (表名)
LOCK_INDEX INDEX_NAME
LOCK_SPACE 没有
LOCK_PAGE 没有
LOCK_REC 没有
LOCK_DATA LOCK_DATA

25.39.21 INFORMATION_SCHEMA INNODB_LOCK_WAITS表

INNODB_LOCK_WAITS 表包含每个被阻止 InnoDB 事务的 一行或多行 ,指示它已请求的锁以及阻止该请求的任何锁。

注意

该表已弃用,自MySQL 8.0.1起删除。 请改用Performance Schema data_lock_waits 表。 请参见 第26.12.12.2节“data_lock_waits表”

这些表的所需权限不同:该 INNODB_LOCK_WAITS 表需要全局 PROCESS 权限。 data_lock_waits 表需要 SELECT 从表中选择 通常的Performance Schema特权

下表显示了从 INNODB_LOCK_WAITS 列到 data_lock_waits 的映射 使用此信息将应用程序从一个表迁移到另一个表。

表25.5从INNODB_LOCK_WAITS到data_lock_waits列的映射

INNODB_LOCK_WAITS列 data_lock_waits列
REQUESTING_TRX_ID REQUESTING_ENGINE_TRANSACTION_ID
REQUESTED_LOCK_ID REQUESTING_ENGINE_LOCK_ID
BLOCKING_TRX_ID BLOCKING_ENGINE_TRANSACTION_ID
BLOCKING_LOCK_ID BLOCKING_ENGINE_LOCK_ID

25.39.22 INFORMATION_SCHEMA INNODB_METRICS表

INNODB_METRICS 表提供了各种 InnoDB 性能信息,补充了性能模式表的特定重点领域 InnoDB 通过简单的查询,您可以检查系统的整体运行状况。 通过更详细的查询,您可以诊断性能瓶颈,资源短缺和应用程序问题等问题。

每个监视器代表 InnoDB 源代码中的 一个点 ,用于收集计数器信息。 每个计数器都可以启动,停止和重置。 您还可以使用公共模块名称为一组计数器执行这些操作。

默认情况下,收集的数据相对较少。 要启动,停止和复位计数器,设置系统变量之一 innodb_monitor_enable innodb_monitor_disable innodb_monitor_reset ,或 innodb_monitor_reset_all 使用计数器的名称,模块,使用了这样一个名字的通配符匹配的名字 字符,或特殊关键字 all

有关使用信息,请参见 第15.14.6节“InnoDB INFORMATION_SCHEMA度量表”

INNODB_METRICS 表包含以下列:

  • NAME

    柜台的唯一名称。

  • SUBSYSTEM

    InnoDB 指标适用 的方面

  • COUNT

    自计数器启用以来的值。

  • MAX_COUNT

    自计数器启用以来的最大值。

  • MIN_COUNT

    自计数器启用以来的最小值。

  • AVG_COUNT

    自计数器启用以来的平均值。

  • COUNT_RESET

    自上次重置以来的计数器值。 (本 _RESET 栏目像一个秒表一圈柜台:您可以测量一段时间间隔内的活动,而累积的数字仍然在使用 COUNT MAX_COUNT 等。)

  • MAX_COUNT_RESET

    自上次重置以来的最大计数器值。

  • MIN_COUNT_RESET

    自上次重置以来的最小计数器值。

  • AVG_COUNT_RESET

    自上次重置以来的平均计数器值。

  • TIME_ENABLED

    上次启动的时间戳。

  • TIME_DISABLED

    最后一站的时间戳。

  • TIME_ELAPSED

    计数器启动后经过的时间(以秒为单位)。

  • TIME_RESET

    上次重置的时间戳。

  • STATUS

    计数器是否仍在运行( enabled )或停止( disabled )。

  • TYPE

    该项目是累积计数器,还是衡量某些资源的当前值。

  • COMMENT

    柜台说明。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_METRICS WHERE NAME='dml_inserts'\G
*************************** 1。排******************** *******
           名称:dml_inserts
      SUBSYSTEM:dml
          COUNT:3
      MAX_COUNT:3
      MIN_COUNT:NULL
      AVG_COUNT:0.046153846153846156
    COUNT_RESET:3
MAX_COUNT_RESET:3
MIN_COUNT_RESET:NULL
AVG_COUNT_RESET:NULL
   TIME_ENABLED:2014-12-04 14:18:28
  TIME_DISABLED:NULL
   TIME_ELAPSED:65
     TIME_RESET:NULL
         状态:已启用
           TYPE:status_counter
        注释:插入的行数

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

  • 事务计数器 COUNT 值可能与Performance Schema EVENTS_TRANSACTIONS_SUMMARY 表中 报告的事务事件数不同 InnoDB 仅计算它执行的那些事务,而Performance Schema收集服务器发起的所有未中止事务的事件,包括空事务。

25.39.23 INFORMATION_SCHEMA INNODB_SESSION_TEMP_TABLESPACES表

INNODB_SESSION_TEMP_TABLESPACES 表提供有关用于内部和用户创建的临时表的会话临时表空间的元数据。 这个表是在MySQL 8.0.13中添加的。

INNODB_SESSION_TEMP_TABLESPACES 表包含以下列:

  • ID

    进程或会话ID。

  • SPACE

    表空间ID。 为会话临时表空间保留了40万个空间ID。 每次启动服务器时都会重新创建会话临时表空间。 服务器关闭时,空间ID不会保留,可以重复使用。

  • PATH

    表空间数据文件路径。 会话临时表空间具有 ibt 文件扩展名。

  • SIZE

    表空间的大小,以字节为单位。

  • STATE

    表空间的状态。 ACTIVE 表示会话当前使用表空间。 INACTIVE 表示表空间位于可用会话临时表空间池中。

  • PURPOSE

    表空间的目的。 INTRINSIC 表示表空间用于优化程序使用的优化内部临时表。 SLAVE 表示已分配表空间用于在复制从属服务器上存储用户创建的临时表。 USER 表示表空间用于用户创建的临时表。 NONE 表示表空间未使用。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_SESSION_TEMP_TABLESPACES;
+ ---- + ------------ + ---------------------------- +  - ----- + ---------- + ----------- +
| ID | 空间| 路径| SIZE | 国家| 目的|
+ ---- + ------------ + ---------------------------- +  - ----- + ---------- + ----------- +
| 8 | 4294566162 | ./#innodb_temp/temp_10.ibt | 81920 | ACTIVE | INTRINSIC |
| 8 | 4294566161 | ./#innodb_temp/temp_9.ibt | 98304 | ACTIVE | 用户|
| 0 | 4294566153 | ./#innodb_temp/temp_1.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566154 | ./#innodb_temp/temp_2.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566155 | ./#innodb_temp/temp_3.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566156 | ./#innodb_temp/temp_4.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566157 | ./#innodb_temp/temp_5.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566158 | ./#innodb_temp/temp_6.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566159 | ./#innodb_temp/temp_7.ibt | 81920 | 不活跃| 没有|
| 0 | 4294566160 | ./#innodb_temp/temp_8.ibt | 81920 | 不活跃| 没有|
+ ---- + ------------ + ---------------------------- +  - ----- + ---------- + ----------- +

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.24 INFORMATION_SCHEMA INNODB_TABLES表

INNODB_TABLES 表提供有关 InnoDB 表的 元数据

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_TABLES 表包含以下列:

  • TABLE_ID

    InnoDB 的标识符 该值在实例中的所有数据库中都是唯一的。

  • NAME

    表的名称,在适当的位置以模式(数据库)名称开头(例如, test/t1 )。 数据库和用户表的名称与最初定义的名称相同,可能受 lower_case_table_names 设置的 影响

  • FLAG

    一个数值,表示有关表格式和存储特征的位级信息。

  • N_COLS

    表中的列数。 报告的数字包括由创建了三个隐藏列 InnoDB DB_ROW_ID DB_TRX_ID ,和 DB_ROLL_PTR )。 报告的数字还包括 虚拟生成的列 (如果存在)。

  • SPACE

    表所在表空间的标识符。 0表示 InnoDB 系统表空间 任何其他数字表示 每个表 文件表 空间或一般的表空间。 TRUNCATE TABLE 声明 后,此标识符保持不变 对于每表文件表空间,此标识符对于实例中所有数据库的表是唯一的。

  • ROW_FORMAT

    该表的行格式( Compact Redundant Dynamic ,或 Compressed )。

  • ZIP_PAGE_SIZE

    zip页面大小。 仅适用于行格式为的表 Compressed

  • SPACE_TYPE

    表所属的表空间类型。 可能的值包括 System 系统表空间, General 一般表空间和 Single 每个表的文件表空间。 表分配给系统表空间使用 CREATE TABLE 拥有 有关更多信息,请参阅 ALTER TABLE TABLESPACE=innodb_system SPACE_TYPE General CREATE TABLESPACE

  • INSTANT_COLS

    使用 ALTER TABLE ... ADD COLUMN with 添加第一个即时列之前表中的列数 ALGORITHM=INSTANT

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TABLE_ID = 214\G
*************************** 1。排******************** *******
     TABLE_ID:214
         姓名:test / t1
         标志:129
       N_COLS:4
        空间:233
   ROW_FORMAT:紧凑
ZIP_PAGE_SIZE:0
   SPACE_TYPE:一般
 INSTANT_COLS:0

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.25 INFORMATION_SCHEMA INNODB_TABLESPACES表

INNODB_TABLESPACES 表提供有关 InnoDB 每个表文件,常规表和撤消表空间的 元数据

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

注意

INFORMATION_SCHEMA FILES 表报告 InnoDB 表空间类型的 元数据, 包括每表文件表空间,通用表空间,系统表空间,全局临时表空间和撤消表空间。

INNODB_TABLESPACES 表包含以下列:

  • SPACE

    表空间ID。

  • NAME

    模式(数据库)和表名。

  • FLAG

    一个数值,表示有关表空间格式和存储特征的位级信息。

  • ROW_FORMAT

    表空间行格式( Compact or Redundant Dynamic Compressed ,或 Undo )。 此列中的数据是从驻留在数据文件中的表空间标志信息中解释的。

    如果表空间行格式是 Redundant 或者 Compact 则无法从此标志信息中确定 ,这就是可能 ROW_FORMAT 之一的原因 Compact or Redundant

  • PAGE_SIZE

    表空间页面大小。 此列中的数据是从驻留在 .ibd 文件中 的表空间标记信息中解释的

  • ZIP_PAGE_SIZE

    表空间zip页面大小。 此列中的数据是从驻留在 .ibd 文件中 的表空间标记信息中解释的

  • SPACE_TYPE

    表空间的类型。 可能的值包括 General 常规表空间, Single 每表文件表空间, System 系统表空间和 Undo 撤消表空间。

  • FS_BLOCK_SIZE

    文件系统块大小,是用于打孔的单位大小。 此列适用于 InnoDB 透明页面压缩 功能。

  • FILE_SIZE

    文件的表观大小,表示文件的最大大小,未压缩。 此列适用于 InnoDB 透明页面压缩 功能。

  • ALLOCATED_SIZE

    文件的实际大小,即磁盘上分配的空间量。 此列适用于 InnoDB 透明页面压缩 功能。

  • SERVER_VERSION

    创建表空间的MySQL版本,或导入表空间的MySQL版本,或上一个主要MySQL版本升级的版本。 版本系列升级(例如从MySQL 8.0升级)不会更改该值。 x 到8.0。 y 该值可以被视为 表空间 创建 标记或 已认证 标记。

  • SPACE_VERSION

    表空间版本,用于跟踪表空间格式的更改。

  • ENCRYPTION

    表空间是否加密。 此列已添加到MySQL 8.0.13中。

  • STATE

    表空间状态。 这个专栏是在MySQL 8.0.14中添加的。

    对于每表文件和一般表空间,状态包括:

    • normal :表空间正常且活动。

    • discarded :表空间被 ALTER TABLE ... DISCARD TABLESPACE 语句 丢弃

    • corrupted :表空间被识别 InnoDB 为已损坏。

    对于撤消表空间,状态包括:

    • active :撤消表空间中的回滚段可以分配给新事务。

    • inactive :撤消表空间中的回滚段不再被新事务使用。 截断过程正在进行中。 撤消表空间由清除线程隐式选择或由 ALTER UNDO TABLESPACE ... SET INACTIVE 语句 使其处于非活动状态

    • empty :撤消表空间被截断,不再处于活动状态。 可以通过 ALTER UNDO TABLESPACE ... SET INACTIVE 声明 将其删除或重新激活

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES WHERE SPACE = 26\G
*************************** 1。排******************** *******
         空间:26
          姓名:test / t1
          标志:0
    ROW_FORMAT:紧凑或冗余
     PAGE_SIZE:16384
 ZIP_PAGE_SIZE:0
    SPACE_TYPE:单身
 FS_BLOCK_SIZE:4096
     FILE_SIZE:98304
ALLOCATED_SIZE:65536
SERVER_VERSION:8.0.4
 SPACE_VERSION:1
    加密:N
         状态:正常

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.26 INFORMATION_SCHEMA INNODB_TABLESPACES_BRIEF表

INNODB_TABLESPACES_BRIEF 表提供了每个表文件,常规,撤消和系统表空间的空间ID,名称,路径,标志和空间类型元数据。

INNODB_TABLESPACES 更慢地提供,因为如由表中提供的其他元数据,相同的元数据,但负载 FS_BLOCK_SIZE FILE_SIZE 以及 ALLOCATED_SIZE ,必须动态加载。

INNODB_DATAFILES 表格 还提供了空间和路径元数据

INNODB_TABLESPACES_BRIEF 表包含以下列:

  • SPACE

    表空间ID。

  • NAME

    表空间名称。 对于每表文件表空间,名称的形式为 schema/table_name

  • PATH

    表空间数据文件路径。 如果 在MySQL数据目录之外的位置创建了 每表文件表 空间,则路径值是完全限定的目录路径。 否则,该路径相对于数据目录。

  • FLAG

    一个数值,表示有关表空间格式和存储特征的位级信息。

  • SPACE_TYPE

    表空间的类型。 可能的值包括 General InnoDB 一般的表空间, Single InnoDB 文件的每个表的表空间,并 System InnoDB 系统表空间。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF WHERE SPACE = 7;
+ ------- + --------- + --------------- + ------- ------- + ----- +
| 空间| NAME | 路径| 标志| SPACE_TYPE |
+ ------- + --------- + --------------- + ------- ------- + ----- +
| 7 | test / t1 | ./test/t1.ibd | 16417 | 单身|
+ ------- + --------- + --------------- + ------- ------- + ----- +

笔记

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.27 INFORMATION_SCHEMA INNODB_TABLESTATS查看

INNODB_TABLESTATS 表提供有关 InnoDB 的低级状态信息的 视图。 MySQL优化器使用此数据来计算查询 InnoDB 时要使用的索引 此信息源自内存数据结构,而不是存储在磁盘上的数据。 没有相应的内部 InnoDB 系统表。

InnoDB 如果表自上次服务器重新启动后已打开并且未超出表缓存,则表在此视图中表示。 持久统计信息可用的表始终在此视图中表示。

表统计信息仅针对 修改索引列的操作 DELETE UPDATE 操作 进行更新 仅修改非索引列的操作不会更新统计信息。

ANALYZE TABLE 清除表统计信息并将 STATS_INITIALIZED 设置 Uninitialized 下次访问表时将再次收集统计信息。

有关相关用法信息和示例,请参见 第15.14.3节“InnoDB INFORMATION_SCHEMA架构对象表”

INNODB_TABLESTATS 表包含以下列:

  • TABLE_ID

    表示可获得统计信息的表的标识符; 与...相同的价值 INNODB_TABLES.TABLE_ID

  • NAME

    表的名称; 与...相同的价值 INNODB_TABLES.NAME

  • STATS_INITIALIZED

    Initialized 如果已经收集了统计信息, Uninitialized 该值 是否已收集

  • NUM_ROWS

    表中当前估计的行数。 每次DML操作后更新。 如果未提交的事务插入到表中或从表中删除,则该值可能不精确。

  • CLUST_INDEX_SIZE

    存储聚簇索引的磁盘上的页数,它 InnoDB 以主键顺序 保存 表数据。 如果尚未为表收集统计信息,则此值可能为null。

  • OTHER_INDEX_SIZE

    磁盘上存储表的所有二级索引的页数。 如果尚未为表收集统计信息,则此值可能为null。

  • MODIFIED_COUNTER

    由DML操作修改的行,如数量 INSERT UPDATE DELETE ,和外键也级联操作。 每次重新计算表统计信息时,都会重置此列

  • AUTOINC

    为任何基于自动增量的操作发出的下一个数字。 AUTOINC 值的变化 取决于请求自动增量号码的次数以及每次请求授予的号码数量。

  • REF_COUNT

    当此计数器达到零时,表元数据可以从表缓存中逐出。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1。排******************** *******
         TABLE_ID:71
             姓名:test / t1
STATS_INITIALIZED:已初始化
         NUM_ROWS:1
 CLUST_INDEX_SIZE:1
 OTHER_INDEX_SIZE:0
 MODIFIED_COUNTER:1
          AUTOINC:0
        REF_COUNT:1

笔记

  • 此表主要用于专家级性能监视,或者在为MySQL开发与性能相关的扩展时。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.28 INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO表

INNODB_TEMP_TABLE_INFO 表提供有关 InnoDB InnoDB 实例 中处于活动状态的 用户创建的 临时表的 信息 它不提供有关 InnoDB 优化程序使用的 内部 临时表的 信息 INNODB_TEMP_TABLE_INFO 表在首次查询时创建,仅存在于内存中,并且不会持久保存到磁盘。

有关用法信息和示例,请参见 第15.14.7节“InnoDB INFORMATION_SCHEMA临时表信息表”

INNODB_TEMP_TABLE_INFO 表包含以下列:

  • TABLE_ID

    临时表的表ID。

  • NAME

    临时表的名称。

  • N_COLS

    临时表中的列数。 数包括由创建了三个隐藏列 InnoDB DB_ROW_ID DB_TRX_ID ,和 DB_ROLL_PTR )。

  • SPACE

    临时表所在的临时表空间的ID。

MySQL的> CREATE TEMPORARY TABLE t1 (c1 INT PRIMARY KEY) ENGINE=INNODB;

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TEMP_TABLE_INFO\G
*************************** 1。排******************** *******
TABLE_ID:97
    姓名:#sql8c88_43_0
  N_COLS:4
   空间:76

笔记

  • 该表主要用于专家级监控。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.39.29 INFORMATION_SCHEMA INNODB_TRX表

INNODB_TRX 表提供有关当前正在执行的每个事务(不包括只读事务)的信息 InnoDB ,包括事务是否在等待锁定,事务何时启动以及事务正在执行的SQL语句(如果有)。

有关用法信息,请参见 第15.14.2.1节“使用InnoDB事务和锁定信息”

INNODB_TRX 表包含以下列:

  • TRX_ID

    内部的唯一交易ID号 InnoDB 不会为只读和非锁定的事务创建这些ID。 有关详细信息,请参见 第8.5.3节“优化InnoDB只读事务”

  • TRX_WEIGHT

    事务的权重,反映(但不一定是确切的计数)更改的行数和事务锁定的行数。 要解决死锁,请 InnoDB 选择权重最小的事务作为 回滚 受害者 无论更改和锁定行的数量如何,已更改非事务表的事务都被认为比其他事务更重。

  • TRX_STATE

    事务执行状态。 允许值是 RUNNING LOCK WAIT ROLLING BACK ,和 COMMITTING

  • TRX_STARTED

    交易开始时间。

  • TRX_REQUESTED_LOCK_ID

    事务当前正在等待的锁的ID,如果 TRX_STATE LOCK WAIT ; 否则 NULL 要获取有关锁的详细信息,请将此列与 ENGINE_LOCK_ID Performance Schema data_locks 连接

  • TRX_WAIT_STARTED

    交易开始等待锁定的时间,如果 TRX_STATE LOCK WAIT ; 否则 NULL

  • TRX_MYSQL_THREAD_ID

    MySQL线程ID。 要获取有关线程的详细信息,请将此列与 ID 连接 INFORMATION_SCHEMA PROCESSLIST ,但请参见 第15.14.2.3节“InnoDB事务和锁定信息的持久性和一致性”

  • TRX_QUERY

    事务正在执行的SQL语句。

  • TRX_OPERATION_STATE

    交易的当前操作,如果有的话; 否则 NULL

  • TRX_TABLES_IN_USE

    InnoDB 处理此事务的当前SQL语句时使用

  • TRX_TABLES_LOCKED

    InnoDB 当前SQL语句具有行锁定 的数量 (因为这些是行锁,而不是表锁,所以通常仍可以通过多个事务读取和写入表,尽管某些行被锁定。)

  • TRX_LOCK_STRUCTS

    事务保留的锁数。

  • TRX_LOCK_MEMORY_BYTES

    内存中此事务的锁结构占用的总大小。

  • TRX_ROWS_LOCKED

    此交易锁定的大致数字或行数。 该值可能包括实际存在但对事务不可见的删除标记行。

  • TRX_ROWS_MODIFIED

    此事务中已修改和插入的行数。

  • TRX_CONCURRENCY_TICKETS

    一个值,指示当前事务在被换出之前可以执行多少工作,由 innodb_concurrency_tickets 系统变量 指定

  • TRX_ISOLATION_LEVEL

    当前事务的隔离级别。

  • TRX_UNIQUE_CHECKS

    是否为当前事务打开或关闭唯一检查。 例如,在批量数据加载期间可能会关闭它们。

  • TRX_FOREIGN_KEY_CHECKS

    是否为当前事务打开或关闭外键检查。 例如,在批量数据加载期间可能会关闭它们。

  • TRX_LAST_FOREIGN_KEY_ERROR

    最后一个外键错误的详细错误消息(如果有); 否则 NULL

  • TRX_ADAPTIVE_HASH_LATCHED

    自适应哈希索引是否被当前事务锁定。 当自适应哈希索引搜索系统被分区时,单个事务不会锁定整个自适应哈希索引。 自适应哈希索引分区由 innodb_adaptive_hash_index_parts ,默认设置为8。

  • TRX_ADAPTIVE_HASH_TIMEOUT

    是否立即为自适应哈希索引放弃搜索锁存器,或者在MySQL的调用之间保留它。 当没有自适应哈希索引争用时,该值保持为零,语句保留锁存器直到它们完成。 在争用期间,它倒计时到零,并且语句在每次行查找后立即释放锁存器。 当自适应散列索引搜索系统被分区(受控制 innodb_adaptive_hash_index_parts )时,该值保持为0。

  • TRX_IS_READ_ONLY

    值为1表示事务是只读的。

  • TRX_AUTOCOMMIT_NON_LOCKING

    值为1表示事务是 SELECT 不使用 FOR UPDATE or LOCK IN SHARED MODE 子句的语句,并且正在执行, autocommit 因此事务只包含这一个语句。 当此列和 TRX_IS_READ_ONLY 都为1时, InnoDB 优化事务以减少与更改表数据的事务关联的开销。

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1。排******************** *******
                    trx_id:1510
                 trx_state:RUNNING
               trx_started:2014-11-19 13:24:40
     trx_requested_lock_id:NULL
          trx_wait_started:NULL
                trx_weight:586739
       trx_mysql_thread_id:2
                 trx_query:DELETE FROM employees.salaries WHERE salary> 65000
       trx_operation_state:更新或删除
         trx_tables_in_use:1
         trx_tables_locked:1
          trx_lock_structs:3003
     trx_lock_memory_bytes:450768
           trx_rows_locked:1407513
         trx_rows_modified:583736
   trx_concurrency_tickets:0
       trx_isolation_level:REPEATABLE READ
         trx_unique_checks:1
    trx_foreign_key_checks:1
trx_last_foreign_key_error:NULL
 trx_adaptive_hash_latched:0
 trx_adaptive_hash_timeout:10000
          trx_is_read_only:0
trx_autocommit_non_locking:0

笔记

25.39.30 INFORMATION_SCHEMA INNODB_VIRTUAL表

INNODB_VIRTUAL 表提供有关 虚拟生成列所基于的 InnoDB 虚拟生成列 和列的 元数据

INNODB_VIRTUAL 中将显示 虚拟生成列所基于的每列的

INNODB_VIRTUAL 表包含以下列:

  • TABLE_ID

    表示与虚拟列关联的表的标识符; 与...相同的价值 INNODB_TABLES.TABLE_ID

  • POS

    虚拟生成列 的位置值 该值很大,因为它编码列序列号和序号位置。 用于计算值的公式使用按位运算:

    ((nInnoDB实例的虚拟生成列+ 1)<< 16)
    +虚拟生成列的序号位置
    

    例如,如果实例中的第一个虚拟生成列 InnoDB 是表的第三列,则公式为 (0 + 1) << 16) + 2 InnoDB 实例中 的第一个虚拟生成列 始终为数字0.作为表中的第三列,虚拟生成列的序号位置为2.顺序位置从0开始计算。

  • BASE_POS

    虚拟生成列所基于的列的序号位置。

MySQL的> CREATE TABLE `t1` (
         `a` int(11) DEFAULT NULL,
         `b` int(11) DEFAULT NULL,
         `c` int(11) GENERATED ALWAYS AS (a+b) VIRTUAL,
         `h` varchar(10) DEFAULT NULL
       ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

MySQL的> SELECT * FROM INFORMATION_SCHEMA.INNODB_VIRTUAL
       WHERE TABLE_ID IN
         (SELECT TABLE_ID FROM INFORMATION_SCHEMA.INNODB_TABLES
          WHERE NAME LIKE "test/t1");
+ ---------- + ------- + ---------- +
| TABLE_ID | POS | BASE_POS |
+ ---------- + ------- + ---------- +
| 98 | 65538 | 0 |
| 98 | 65538 | 1 |
+ ---------- + ------- + ---------- +

笔记

  • 如果为 虚拟生成的列 分配常量值 ,如下表所示,则该列的条目不会出现在 INNODB_VIRTUAL 表中。 要显示条目,虚拟生成的列必须具有基本列。

    CREATE TABLE`t1`(
      `a`int(11)DEFAULT NULL,
      `b` int(11)DEFAULT NULL,
      `c`int(11)生成总是(5)VIRTUAL
    )ENGINE = InnoDB DEFAULT CHARSET = utf8mb4;
    

    但是,此列的元数据确实显示在 INNODB_COLUMNS 表中。

  • 您必须具有 PROCESS 查询此表 权限。

  • 使用 INFORMATION_SCHEMA COLUMNS 表或 SHOW COLUMNS 语句可以查看有关此表的列的其他信息,包括数据类型和默认值。

25.40 INFORMATION_SCHEMA线程池表

注意

从MySQL 8.0.14开始,线程池 INFORMATION_SCHEMA 表也​​可用作性能模式表。 (请参见 第26.12.15节“性能模式线程池表” 。)这些 INFORMATION_SCHEMA 表已弃用,将在以后的MySQL版本中删除。 应用程序应从旧表转换到新表。 例如,如果应用程序使用此查询:

SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_STATE;

应用程序应该使用此查询:

SELECT * FROM performance_schema.tp_thread_state;

以下部分描述了 INFORMATION_SCHEMA 与线程池插件关联 表(请参见 第5.6.3节“MySQL Enterprise线程池” )。 它们提供有关线程池操作的信息:

这些表中的行代表快照及时。 在这种情况下 TP_THREAD_STATE ,线程组的所有行都包含时间快照。 因此,MySQL服务器在生成快照时保留线程组的互斥锁。 但是它并没有同时在所有线程组上保存互斥锁,以防止语句 TP_THREAD_STATE 阻止整个MySQL服务器。

INFORMATION_SCHEMA 线程池表由各个插件和决策执行是否加载一个可以由独立于其他(见 第5.6.3.2,“线程池安装” )。 但是,所有表的内容取决于启用的线程池插件。 如果启用了表插件但没有创建线程池插件,则表变为可见并且可以访问但是为空。

25.40.1 INFORMATION_SCHEMA TP_THREAD_GROUP_STATE表

注意

从MySQL 8.0.14开始,线程池 INFORMATION_SCHEMA 表也​​可用作性能模式表。 (请参见 第26.12.15节“性能模式线程池表” 。)这些 INFORMATION_SCHEMA 表已弃用,将在以后的MySQL版本中删除。 应用程序应从旧表转换到新表。 例如,如果应用程序使用此查询:

SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_GROUP_STATE;

应用程序应该使用此查询:

SELECT * FROM performance_schema.tp_thread_group_state;

TP_THREAD_GROUP_STATE 表在线程池中每个线程组有一行。 每行提供有关组当前状态的信息。

有关表中列的说明 INFORMATION_SCHEMA TP_THREAD_GROUP_STATE ,请参见 第26.12.15.1节“tp_thread_group_state表” Performance Schema tp_thread_group_state 表具有等效列。

25.40.2 INFORMATION_SCHEMA TP_THREAD_GROUP_STATS表

注意

从MySQL 8.0.14开始,线程池 INFORMATION_SCHEMA 表也​​可用作性能模式表。 (请参见 第26.12.15节“性能模式线程池表” 。)这些 INFORMATION_SCHEMA 表已弃用,将在以后的MySQL版本中删除。 应用程序应从旧表转换到新表。 例如,如果应用程序使用此查询:

SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_GROUP_STATS;

应用程序应该使用此查询:

SELECT * FROM performance_schema.tp_thread_group_stats;

TP_THREAD_GROUP_STATS 表报告每个线程组的统计信息。 每组有一行。

有关表中列的说明 INFORMATION_SCHEMA TP_THREAD_GROUP_STATS ,请参见 第26.12.15.2节“tp_thread_group_stats表” Performance Schema tp_thread_group_stats 表具有等效列。

25.40.3 INFORMATION_SCHEMA TP_THREAD_STATE表

注意

从MySQL 8.0.14开始,线程池 INFORMATION_SCHEMA 表也​​可用作性能模式表。 (请参见 第26.12.15节“性能模式线程池表” 。)这些 INFORMATION_SCHEMA 表已弃用,将在以后的MySQL版本中删除。 应用程序应从旧表转换到新表。 例如,如果应用程序使用此查询:

SELECT * FROM INFORMATION_SCHEMA.TP_THREAD_STATE;

应用程序应该使用此查询:

SELECT * FROM performance_schema.tp_thread_state;

TP_THREAD_STATE 表在线程池创建的每个线程中有一行来处理连接。

有关表中列的说明 INFORMATION_SCHEMA TP_THREAD_STATE ,请参见 第26.12.15.3节“tp_thread_state表” Performance Schema tp_thread_state 表具有等效列。

25.41 INFORMATION_SCHEMA连接控制表

以下部分描述了 INFORMATION_SCHEMA CONNECTION_CONTROL 插件 关联

25.41.1 INFORMATION_SCHEMA CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS表

此表提供有关每个客户端用户/主机组合的当前连续失败连接尝试次数的信息。

CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 有这些列:

  • USERHOST

    格式化 连接尝试失败的客户端的用户/主机组合 'user_name'@'host_name'

  • FAILED_ATTEMPTS

    当前连续失败的连接尝试次数 USERHOST 这会计算所有失败的尝试,无论它们是否被延迟。 服务器为其响应添加延迟的尝试次数是 FAILED_ATTEMPTS 值与 connection_control_failed_connections_threshold 系统变量值 之间的差异

笔记

  • CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 插件必须激活此表是可用的,并且 CONNECTION_CONTROL 插件必须被激活或表的内容将永远是空的。 请参见 第6.4.2节“连接控制插件”

  • 该表仅包含已有一个或多个连续失败的连接尝试而没有后续成功尝试的客户端的行。 当客户端成功连接时,其失败连接计数将重置为零,服务器将删除与客户端对应的任何行。

  • connection_control_failed_connections_threshold 在运行时 系统变量赋值会将所有累积的失败连接计数器重置为零,这会导致表变空。

25.42扩展显示声明

SHOW 语句的 一些扩展 伴随着以下的实现 INFORMATION_SCHEMA

  • SHOW 可用于获取有关其 INFORMATION_SCHEMA 自身 结构的信息

  • 有几个 SHOW 语句接受一个 WHERE 子句,它在指定要显示的行方面提供了更大的灵活性

INFORMATION_SCHEMA 是一个信息数据库,因此它的名称包含在输出中 SHOW DATABASES 同样, SHOW TABLES 可以使用它 INFORMATION_SCHEMA 来获取其表的列表:

MySQL的> SHOW TABLES FROM INFORMATION_SCHEMA;
+ --------------------------------------- +
| Tables_in_INFORMATION_SCHEMA |
+ --------------------------------------- +
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| 专栏|
| COLUMN_PRIVILEGES |
| 发动机|
| 活动|
| 文件|
| KEY_COLUMN_USAGE |
| PARTITIONS |
| 插件|
| PROCESSLIST |
| REFERENTIAL_CONSTRAINTS |
| 常规|
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| 统计|
| 表格|
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| 触发器|
| USER_PRIVILEGES |
| 观点|
+ --------------------------------------- +

SHOW COLUMNS DESCRIBE 可以显示有关各个 INFORMATION_SCHEMA 表中 列的信息

SHOW 接受 LIKE 子句来限制显示的行的 WHERE 语句 也允许一个 子句指定所选行必须满足的更一般条件:

显示字符集
显示收集
显示列
显示数据库
显示功能状态
显示索引
显示开放表格
显示程序状态
显示状态
显示表状态
显示表格
显示触发器
显示变量

WHERE 子句(如果存在)将根据 SHOW 语句 显示的列名进行评估 例如,该 SHOW CHARACTER SET 语句生成以下输出列:

MySQL的> SHOW CHARACTER SET;
+ ---------- + ----------------------------- + -------- ------------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ ---------- + ----------------------------- + -------- ------------- + -------- +
| big5 | Big5繁体中文| big5_chinese_ci | 2 |
| dec8 | DEC西欧| dec8_swedish_ci | 1 |
| cp850 | DOS西欧| cp850_general_ci | 1 |
| hp8 | 惠普西欧| hp8_english_ci | 1 |
| koi8r | KOI8-R Relcom俄语| koi8r_general_ci | 1 |
| 拉丁1 | cp1252西欧| latin1_swedish_ci | 1 |
| 拉丁文2 | ISO 8859-2中欧| latin2_general_ci | 1 |
...

要使用 WHERE 子句 SHOW CHARACTER SET ,您可以引用这些列名称。 例如,以下语句显示有关默认排序规则包含字符串的字符集的信息 'japanese'

MySQL的> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+ --------- + --------------------------- + ----------- ---------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ --------- + --------------------------- + ----------- ---------- + -------- +
| ujis | EUC-JP日语| ujis_japanese_ci | 3 |
| sjis | Shift-JIS日语| sjis_japanese_ci | 2 |
| cp932 | SJIS for Windows日语| cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows日语| eucjpms_japanese_ci | 3 |
+ --------- + --------------------------- + ----------- ---------- + -------- +

此语句显示多字节字符集:

MySQL的> SHOW CHARACTER SET WHERE Maxlen > 1;
+ --------- + --------------------------- + ----------- ---------- + -------- +
| Charset | 说明| 默认排序规则| Maxlen |
+ --------- + --------------------------- + ----------- ---------- + -------- +
| big5 | Big5繁体中文| big5_chinese_ci | 2 |
| ujis | EUC-JP日语| ujis_japanese_ci | 3 |
| sjis | Shift-JIS日语| sjis_japanese_ci | 2 |
| euckr | EUC-KR韩语| euckr_korean_ci | 2 |
| gb2312 | GB2312简体中文| gb2312_chinese_ci | 2 |
| gbk | GBK简体中文| gbk_chinese_ci | 2 |
| utf8 | UTF-8 Unicode | utf8_general_ci | 3 |
| ucs2 | UCS-2 Unicode | ucs2_general_ci | 2 |
| cp932 | SJIS for Windows日语| cp932_japanese_ci | 2 |
| eucjpms | UJIS for Windows日语| eucjpms_japanese_ci | 3 |
+ --------- + --------------------------- + ----------- ---------- + -------- +

原文