MySQL8-中文参考-一百零四-

170 阅读39分钟

MySQL8 中文参考(一百零四)

原文:docs.oracle.com/javase/tutorial/reallybigindex.html

28.3.31 The INFORMATION_SCHEMA SCHEMATA Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-table.html

一个模式是一个数据库,因此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语句中获取。参见 Section 15.7.7.14, “SHOW DATABASES Statement”。以下语句是等效的:

SELECT SCHEMA_NAME AS `Database`
  FROM INFORMATION_SCHEMA.SCHEMATA
  [WHERE SCHEMA_NAME LIKE '*wild*']

SHOW DATABASES
  [LIKE '*wild*']

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

注意

因为任何静态全局特权都被视为对所有数据库的特权,任何静态全局特权都使用户能够使用SHOW DATABASES或通过检查INFORMATION_SCHEMASCHEMATA表来查看所有数据库名称,除了在数据库级别通过部分撤销限制的数据库。

注意

  • SCHEMATA_EXTENSIONS表通过提供有关模式选项的信息来扩展SCHEMATA表。

28.3.32 INFORMATION_SCHEMA SCHEMATA_EXTENSIONS

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-schemata-extensions-table.html

SCHEMATA_EXTENSIONS 表(自 MySQL 8.0.22 起可用)通过提供有关模式选项的信息来扩充 SCHEMATA 表。

SCHEMATA_EXTENSIONS 表包含以下列:

  • CATALOG_NAME

    模式所属的目录名称。该值始终为def

  • SCHEMA_NAME

    模式的名称。

  • OPTIONS

    模式的选项。如果模式是只读的,则值包含READ ONLY=1。如果模式不是只读的,则不会出现READ ONLY选项。

示例

mysql> ALTER SCHEMA mydb READ ONLY = 1;
mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_EXTENSIONS
       WHERE SCHEMA_NAME = 'mydb';
+--------------+-------------+-------------+
| CATALOG_NAME | SCHEMA_NAME | OPTIONS     |
+--------------+-------------+-------------+
| def          | mydb        | READ ONLY=1 |
+--------------+-------------+-------------+

mysql> ALTER SCHEMA mydb READ ONLY = 0;
mysql> SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_EXTENSIONS
       WHERE SCHEMA_NAME = 'mydb';
+--------------+-------------+---------+
| CATALOG_NAME | SCHEMA_NAME | OPTIONS |
+--------------+-------------+---------+
| def          | mydb        |         |
+--------------+-------------+---------+

注意事项

28.3.33 The INFORMATION_SCHEMA SCHEMA_PRIVILEGES Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-schema-privileges-table.html

SCHEMA_PRIVILEGES表提供有关模式(数据库)权限的信息。它从mysql.db系统表中获取其值。

SCHEMA_PRIVILEGES表具有以下列:

  • GRANTEE

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

  • TABLE_CATALOG

    模式所属的目录名称。该值始终为def

  • TABLE_SCHEMA

    模式的名称。

  • PRIVILEGE_TYPE

    授予的权限。该值可以是在模式级别授予的任何权限;请参阅第 15.7.1.6 节,“GRANT 语句”。每行列出一个权限,因此每个受让人持有的模式权限都有一行。

  • IS_GRANTABLE

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

注意

  • SCHEMA_PRIVILEGES是一个非标准的INFORMATION_SCHEMA表。

以下语句等价:

SELECT ... FROM INFORMATION_SCHEMA.SCHEMA_PRIVILEGES

SHOW GRANTS ...

28.3.34 The INFORMATION_SCHEMA STATISTICS Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-statistics-table.html

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

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

注意

如果启用了innodb_read_only系统变量,则可能因为无法更新使用InnoDB的数据字典中的统计信息表而导致ANALYZE TABLE失败。即使操作更新了表本身(例如,如果是MyISAM表),对更新键分布的ANALYZE TABLE操作也可能导致失败。要获取更新后的分布统计信息,请设置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 TABLEALTER TABLECREATE INDEX语句中的索引规范中,对于非二进制字符串类型(CHARVARCHARTEXT),前缀长度被解释为多字节字符集的字符数,对于二进制字符串类型(BINARYVARBINARYBLOB),前缀长度以字节为单位。在为使用多字节字符集的非二进制字符串列指定前缀长度时,请考虑这一点。

    有关索引前缀的其他信息,请参见第 10.3.5 节,“列索引”和第 15.1.15 节,“CREATE INDEX Statement”。

  • PACKED

    指示键如何打包。如果不是,则为NULL

  • NULLABLE

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

  • INDEX_TYPE

    使用的索引方法(BTREEFULLTEXTHASHRTREE)。

  • COMMENT

    关于索引的信息,未在其自己的列中描述,例如如果索引已禁用,则为disabled

  • INDEX_COMMENT

    创建索引时使用COMMENT属性提供的索引的任何注释。

  • IS_VISIBLE

    索引是否对优化器可见。请参见第 10.3.12 节,“不可见索引”。

  • EXPRESSION

    MySQL 8.0.13 及更高版本支持功能键部分(参见功能键部分),这影响COLUMN_NAMEEXPRESSION列:

    • 对于非功能键部分,COLUMN_NAME指示由键部分索引的列,EXPRESSIONNULL

    • 对于功能键部分,COLUMN_NAME列为NULL,而EXPRESSION表示键部分的表达式。

注意

  • 没有用于索引的标准INFORMATION_SCHEMA表。MySQL 列列表类似于 SQL Server 2000 返回的sp_statistics,只是QUALIFIEROWNER分别替换为CATALOGSCHEMA

表索引的信息也可以从SHOW INDEX语句中获取。请参见第 15.7.7.22 节,“SHOW INDEX Statement”。以下语句是等效的:

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

SHOW INDEX
  FROM *tbl_name*
  FROM *db_name*

在 MySQL 8.0.30 及更高版本中,默认情况下,此表中显示有关生成的不可见主键列的信息。您可以通过设置show_gipk_in_create_table_and_information_schema = OFF来隐藏此类信息。有关更多信息,请参见第 15.1.20.11 节,“生成的不可见主键”。

28.3.35 INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-st-geometry-columns-table.html

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

    列数据类型。允许的值为:geometrypointlinestringpolygonmultipointmultilinestringmultipolygongeometrycollection。此列是 MySQL 对标准的扩展。

28.3.36 INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-st-spatial-reference-systems-table.html

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

ST_SPATIAL_REFERENCE_SYSTEMS 表中的条目基于 European Petroleum Survey Group(EPSG)数据集,除了对应于 MySQL 中使用的特殊 SRS 的 SRID 0,该 SRS 表示一个无限的平坦笛卡尔平面,其轴没有分配单位。有关 SRS 的其他信息,请参见 Section 13.4.5, “Spatial Reference System Support”。

ST_SPATIAL_REFERENCE_SYSTEMS 表具有以下列:

  • SRS_NAME

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

  • SRS_ID

    空间参考系统数值 ID。此值是唯一的。

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

  • ORGANIZATION

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

  • ORGANIZATION_COORDSYS_ID

    组织定义的空间参考系统的数值 ID。

  • DEFINITION

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

    当 GIS 函数需要定义时,会按需解析 SRS 定义。解析的定义存储在数据字典缓存中,以便重用并避免为每个需要 SRS 信息的语句产生解析开销。

  • DESCRIPTION

    空间参考系统描述。

注意

  • SRS_NAMEORGANIZATIONORGANIZATION_COORDSYS_IDDESCRIPTION 列包含可能对用户感兴趣的信息,但它们不被 MySQL 使用。

示例

mysql> SELECT * FROM ST_SPATIAL_REFERENCE_SYSTEMS
       WHERE SRS_ID = 4326\G
*************************** 1\. row ***************************
                SRS_NAME: WGS 84
                  SRS_ID: 4326
            ORGANIZATION: EPSG
ORGANIZATION_COORDSYS_ID: 4326
              DEFINITION: GEOGCS["WGS 84",DATUM["World Geodetic System 1984",
                          SPHEROID["WGS 84",6378137,298.257223563,
                          AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],
                          PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
                          UNIT["degree",0.017453292519943278,
                          AUTHORITY["EPSG","9122"]],
                          AXIS["Lat",NORTH],AXIS["Long",EAST],
                          AUTHORITY["EPSG","4326"]]
             DESCRIPTION:

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

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

mysql> SELECT
         COUNT(*),
         CASE LEFT(DEFINITION, 6)
           WHEN 'PROJCS' THEN 'Projected'
           WHEN 'GEOGCS' THEN 'Geographic'
           ELSE 'Other'
         END AS SRS_TYPE
       FROM INFORMATION_SCHEMA.ST_SPATIAL_REFERENCE_SYSTEMS
       GROUP BY SRS_TYPE;
+----------+------------+
| COUNT(*) | SRS_TYPE   |
+----------+------------+
|        1 | Other      |
|     4668 | Projected  |
|      483 | Geographic |
+----------+------------+

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

  • 创建空间参考系统:参见第 15.1.19 节,“创建空间参考系统语句”。该语句的描述包括有关 SRS 组件的附加信息。

  • 删除空间参考系统:参见第 15.1.31 节,“删除空间参考系统语句”。

28.3.37 信息模式 ST_UNITS_OF_MEASURE 表

dev.mysql.com/doc/refman/8.0/en/information-schema-st-units-of-measure-table.html

ST_UNITS_OF_MEASURE 表(自 MySQL 8.0.14 起可用)提供了关于 ST_Distance() 函数可接受单位的信息。

ST_UNITS_OF_MEASURE 表包含以下列:

  • UNIT_NAME

    单位的名称。

  • UNIT_TYPE

    单位类型(例如,线性)。

  • CONVERSION_FACTOR

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

  • DESCRIPTION

    单位的描述。

28.3.38 The INFORMATION_SCHEMA TABLES Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tables-table.html

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

TABLES中表示表统计信息的列保存了缓存值。information_schema_stats_expiry系统变量定义了缓存表统计信息过期之前的时间段。默认值为 86400 秒(24 小时)。如果没有缓存统计信息或统计信息已过期,在查询表统计信息列时,将从存储引擎中检索统计信息。要随时更新给定表的缓存值,请使用ANALYZE TABLE语句。要始终直接从存储引擎中检索最新统计信息,请将information_schema_stats_expiry设置为0。更多信息,请参见Section 10.2.3, “Optimizing INFORMATION_SCHEMA Queries”

注意

如果启用了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,或INFORMATION_SCHEMA表的SYSTEM VIEW

    TABLES表不列出TEMPORARY表。

  • ENGINE

    表的存储引擎。请参阅Chapter 17, The InnoDB Storage Engine,以及Chapter 18, Alternative Storage Engines

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

  • VERSION

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

  • ROW_FORMAT

    行存储格式(FixedDynamicCompressedRedundantCompact)。对于MyISAM表,Dynamic对应于myisamchk -dvv报告的Packed

  • TABLE_ROWS

    行数。一些存储引擎,如MyISAM,存储确切的计数。对于其他存储引擎,如InnoDB,这个值是一个近似值,可能与实际值相差 40%至 50%。在这种情况下,使用SELECT COUNT(*)来获得准确的计数。

    对于INFORMATION_SCHEMA表,TABLE_ROWSNULL

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

  • AVG_ROW_LENGTH

    平均行长度。

  • DATA_LENGTH

    对于MyISAMDATA_LENGTH是数据文件的长度,以字节为单位。

    对于InnoDBDATA_LENGTH是近似为聚簇索引分配的空间量,以字节为单位。具体来说,它是聚簇索引大小(以页为单位)乘以InnoDB页大小。

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

  • MAX_DATA_LENGTH

    对于MyISAMMAX_DATA_LENGTH是数据文件的最大长度。这是可以存储在表中的数据字节数总数,考虑到使用的数据指针大小。

    对于InnoDB未使用。

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

  • INDEX_LENGTH

    对于MyISAMINDEX_LENGTH是索引文件的长度,以字节为单位。

    对于InnoDBINDEX_LENGTH是非聚簇索引分配的空间量的近似值,以字节为单位。具体来说,它是非聚簇索引大小(以页为单位)的总和,乘以InnoDB页大小。

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

  • DATA_FREE

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

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

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

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

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

    更多信息,请参见 Section 28.3.21, “The INFORMATION_SCHEMA PARTITIONS Table”。

  • AUTO_INCREMENT

    下一个AUTO_INCREMENT值。

  • CREATE_TIME

    表创建的时间。

  • UPDATE_TIME

    表上次更新的时间。对于某些存储引擎,此值为NULL。即使使用每个InnoDB表在单独的.ibd文件中的 file-per-table 模式,change buffering 也可能延迟对数据文件的写入,因此文件修改时间与最后插入、更新或删除的时间不同。对于MyISAM,使用数据文件时间戳;但在 Windows 上,时间戳不会被更新,因此值不准确。

    UPDATE_TIME显示了对未分区的InnoDB表执行的最后一次UPDATEINSERTDELETE的时间戳值。对于 MVCC,时间戳值反映了COMMIT时间,被视为最后更新时间。当服务器重新启动或表从InnoDB数据字典缓存中删除时,时间戳不会被持久化。

  • CHECK_TIME

    上次检查表的时间。并非所有存储引擎都会更新此时间,如果不更新,则值始终为NULL

    对于分区的InnoDB表,CHECK_TIME始终为NULL

  • TABLE_COLLATION

    表的默认排序规则。输出中没有明确列出表的默认字符集,但排序规则名称以字符集名称开头。

  • CHECKSUM

    活动校验和值(如果有)。

  • CREATE_OPTIONS

    CREATE TABLE一起使用的额外选项。

    CREATE_OPTIONS显示为分区表。

    在 MySQL 8.0.16 之前,CREATE_OPTIONS 显示了为在每个文件表空间中创建的表指定的 ENCRYPTION 子句。从 MySQL 8.0.16 开始,如果表已加密或指定的加密与模式加密不同,则显示每个文件表空间的加密子句。对于在一般表空间中创建的表,不显示加密子句。要识别加密的每个文件表空间和一般表空间,请查询 INNODB_TABLESPACESENCRYPTION 列。

    在创建表时禁用 严格模式,如果指定的行格式不受支持,则使用存储引擎的默认行格式。表的实际行格式在 ROW_FORMAT 列中报告。CREATE_OPTIONS 显示在 CREATE TABLE 语句中指定的行格式。

    当更改表的存储引擎时,不适用于新存储引擎的表选项保留在表定义中,以便在必要时将具有先前定义选项的表还原为原始存储引擎。CREATE_OPTIONS 列可能显示保留的选项。

  • TABLE_COMMENT

    创建表时使用的注释(或者为什么 MySQL 无法访问表信息的信息)。

注意

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

  • 对于 NDB 表,DATA_LENGTH 仅包括存储在主内存中的数据;MAX_DATA_LENGTHDATA_FREE 列适用于磁盘数据。

  • 对于 NDB 集群磁盘数据表,MAX_DATA_LENGTH 显示为磁盘数据表或片段的磁盘部分分配的空间。(内存数据资源使用由 DATA_LENGTH 列报告。)

  • 对于 MEMORY 表,DATA_LENGTHMAX_DATA_LENGTHINDEX_LENGTH 的值近似于实际分配的内存量。分配算法会大量保留内存以减少分配操作的数量。

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

表信息也可以通过SHOW TABLE STATUSSHOW TABLES语句获取。请参阅 Section 15.7.7.38, “SHOW TABLE STATUS Statement”和 Section 15.7.7.39, “SHOW TABLES Statement”。以下语句是等效的:

SELECT
    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
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = '*db_name*'
  [AND table_name LIKE '*wild*']

SHOW TABLE STATUS
  FROM *db_name*
  [LIKE '*wild*']

以下语句是等效的:

SELECT
  TABLE_NAME, TABLE_TYPE
  FROM INFORMATION_SCHEMA.TABLES
  WHERE table_schema = '*db_name*'
  [AND table_name LIKE '*wild*']

SHOW FULL TABLES
  FROM *db_name*
  [LIKE '*wild*']

28.3.39 INFORMATION_SCHEMA TABLES_EXTENSIONS

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tables-extensions-table.html

TABLES_EXTENSIONS 表(自 MySQL 8.0.21 起可用)提供有关为主要和次要存储引擎定义的表属性的信息。

注意

TABLES_EXTENSIONS 表保留供将来使用。

TABLES_EXTENSIONS 表具有以下列:

  • TABLE_CATALOG

    表所属目录的名称。此值始终为def

  • TABLE_SCHEMA

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

  • TABLE_NAME

    表的名称。

  • ENGINE_ATTRIBUTE

    为主要存储引擎定义的表属性。保留供将来使用。

  • SECONDARY_ENGINE_ATTRIBUTE

    为次要存储引擎定义的表属性。保留供将来使用。

28.3.40 INFORMATION_SCHEMA TABLESPACES

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tablespaces-table.html

此表未被使用。它已被弃用;预计在未来的 MySQL 版本中将被移除。其他INFORMATION_SCHEMA表可能提供相关信息:

  • 对于NDBINFORMATION_SCHEMA中的FILES表提供与表空间相关的信息。

  • 对于InnoDBINFORMATION_SCHEMA中的INNODB_TABLESPACESINNODB_DATAFILES表提供表空间元数据。

28.3.41 The INFORMATION_SCHEMA TABLESPACES_EXTENSIONS Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tablespaces-extensions-table.html

TABLESPACES_EXTENSIONS 表(自 MySQL 8.0.21 起可用)提供了关于为主要存储引擎定义的表空间属性的信息。

注意

TABLESPACES_EXTENSIONS 表保留供将来使用。

TABLESPACES_EXTENSIONS 表具有以下列:

  • TABLESPACE_NAME

    表空间的名称。

  • ENGINE_ATTRIBUTE

    为主要存储引擎定义的表空间属性。保留供将来使用。

28.3.42 信息模式表约束表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-table-constraints-table.html

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

TABLE_CONSTRAINTS表具有以下列:

  • CONSTRAINT_CATALOG

    约束所属的目录的名称。此值始终为def

  • CONSTRAINT_SCHEMA

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

  • CONSTRAINT_NAME

    约束的名称。

  • TABLE_SCHEMA

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

  • TABLE_NAME

    表的名称。

  • CONSTRAINT_TYPE

    约束的类型。该值可以是UNIQUEPRIMARY KEYFOREIGN KEY,或者(从 MySQL 8.0.16 开始)CHECK。这是一个CHAR(而不是ENUM输出的Key_name列中获得的信息大致相同,当Non_unique列为0时。

  • ENFORCED

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

    此列在 MySQL 8.0.16 中添加。

28.3.43 INFORMATION_SCHEMA TABLE_CONSTRAINTS_EXTENSIONS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-table-constraints-extensions-table.html

TABLE_CONSTRAINTS_EXTENSIONS 表(自 MySQL 8.0.21 起可用)提供有关为主要和辅助存储引擎定义的表约束属性的信息。

注意

TABLE_CONSTRAINTS_EXTENSIONS 表保留供将来使用。

TABLE_CONSTRAINTS_EXTENSIONS 表包含以下列:

  • CONSTRAINT_CATALOG

    表所属目录的名称。

  • CONSTRAINT_SCHEMA

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

  • CONSTRAINT_NAME

    约束的名称。

  • TABLE_NAME

    表的名称。

  • ENGINE_ATTRIBUTE

    为主要存储引擎定义的约束属性。保留供将来使用。

  • SECONDARY_ENGINE_ATTRIBUTE

    为辅助存储引擎定义的约束属性。保留供将来使用。

28.3.44 The INFORMATION_SCHEMA TABLE_PRIVILEGES Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-table-privileges-table.html

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

TABLE_PRIVILEGES表具有以下列:

  • GRANTEE

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

  • TABLE_CATALOG

    表所属目录的名称。该值始终为def

  • TABLE_SCHEMA

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

  • TABLE_NAME

    表的名称。

  • PRIVILEGE_TYPE

    授予的特权。该值可以是可以在表级别授予的任何特权;参见第 15.7.1.6 节,“GRANT 语句”。每行列出一个特权,因此每个受让人持有的表特权都有一行。

  • IS_GRANTABLE

    如果用户具有GRANT OPTION特权,则为YES,否则为NO。输出不会将GRANT OPTION列为具有PRIVILEGE_TYPE='GRANT OPTION'的单独行。

注意事项

  • TABLE_PRIVILEGES是一个非标准的INFORMATION_SCHEMA表。

以下语句等价:

SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES

SHOW GRANTS ...

28.3.45 信息模式 TRIGGERS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-triggers-table.html

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

TRIGGERS表具有以下列:

  • TRIGGER_CATALOG

    触发器所属的目录名称。此值始终为def

  • TRIGGER_SCHEMA

    触发器所属的模式(数据库)的名称。

  • TRIGGER_NAME

    触发器的名称。

  • EVENT_MANIPULATION

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

  • EVENT_OBJECT_CATALOGEVENT_OBJECT_SCHEMAEVENT_OBJECT_TABLE

    如第 27.3 节,“使用触发器”中所述,每个触发器都与一个表格关联。这些列指示此表格所在的目录和模式(数据库),以及表格名称。EVENT_OBJECT_CATALOG值始终为def

  • ACTION_ORDER

    触发器动作在相同表格上具有相同EVENT_MANIPULATIONACTION_TIMING值的触发器列表中的序数位置。

  • ACTION_CONDITION

    此值始终为NULL

  • ACTION_STATEMENT

    触发器主体;即触发器激活时执行的语句。此文本使用 UTF-8 编码。

  • ACTION_ORIENTATION

    此值始终为ROW

  • ACTION_TIMING

    触发器在触发事件之前或之后激活。值为BEFOREAFTER

  • ACTION_REFERENCE_OLD_TABLE

    此值始终为NULL

  • ACTION_REFERENCE_NEW_TABLE

    此值始终为NULL

  • ACTION_REFERENCE_OLD_ROWACTION_REFERENCE_NEW_ROW

    旧列标识符和新列标识符。ACTION_REFERENCE_OLD_ROW值始终为OLDACTION_REFERENCE_NEW_ROW值始终为NEW

  • CREATED

    触发器创建时的日期和时间。这是一个TIMESTAMP(2)值(带有百分之一秒的小数部分)。

  • SQL_MODE

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

  • DEFINER

    DEFINER子句中命名的帐户(通常是创建触发器的用户),格式为'*user_name*'@'*host_name*'

  • CHARACTER_SET_CLIENT

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

  • COLLATION_CONNECTION

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

  • DATABASE_COLLATION

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

示例

以下示例使用了 Section 27.3, “Using Triggers”中定义的ins_sum触发器:

mysql> SELECT * FROM INFORMATION_SCHEMA.TRIGGERS
       WHERE TRIGGER_SCHEMA='test' AND TRIGGER_NAME='ins_sum'\G
*************************** 1\. row ***************************
           TRIGGER_CATALOG: def
            TRIGGER_SCHEMA: test
              TRIGGER_NAME: ins_sum
        EVENT_MANIPULATION: INSERT
      EVENT_OBJECT_CATALOG: def
       EVENT_OBJECT_SCHEMA: test
        EVENT_OBJECT_TABLE: account
              ACTION_ORDER: 1
          ACTION_CONDITION: NULL
          ACTION_STATEMENT: SET @sum = @sum + NEW.amount
        ACTION_ORIENTATION: ROW
             ACTION_TIMING: BEFORE
ACTION_REFERENCE_OLD_TABLE: NULL
ACTION_REFERENCE_NEW_TABLE: NULL
  ACTION_REFERENCE_OLD_ROW: OLD
  ACTION_REFERENCE_NEW_ROW: NEW
                   CREATED: 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: me@localhost
      CHARACTER_SET_CLIENT: utf8mb4
      COLLATION_CONNECTION: utf8mb4_0900_ai_ci
        DATABASE_COLLATION: utf8mb4_0900_ai_ci

触发器信息也可以通过SHOW TRIGGERS语句获取。请参阅 Section 15.7.7.40, “SHOW TRIGGERS Statement”。

28.3.46 INFORMATION_SCHEMA USER_ATTRIBUTES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-user-attributes-table.html

USER_ATTRIBUTES表(自 MySQL 8.0.21 起可用)提供有关用户评论和用户属性的信息。它从mysql.user系统表中获取其值。

USER_ATTRIBUTES表具有以下列:

  • USER

    适用于ATTRIBUTE列值的帐户的用户名部分。

  • HOST

    适用于ATTRIBUTE列值的帐户的主机名部分。

  • ATTRIBUTE

    属于由USERHOST列指定的帐户的用户评论、用户属性或两者。该值以 JSON 对象表示。属性的显示方式与使用带有ATTRIBUTECOMMENT选项的CREATE USERALTER USER语句设置的方式完全相同。评论显示为具有comment作为键的键值对。有关更多信息和示例,请参阅CREATE USER Comment and Attribute Options

注意

  • USER_ATTRIBUTES 是一个非标准的INFORMATION_SCHEMA表。

  • 要仅获取给定用户的用户评论作为未引用字符串,您可以使用以下查询:

    mysql> SELECT ATTRIBUTE->>"$.comment" AS Comment
     ->     FROM INFORMATION_SCHEMA.USER_ATTRIBUTES
     ->     WHERE USER='bill' AND HOST='localhost';
    +-----------+
    | Comment   |
    +-----------+
    | A comment |
    +-----------+
    

    同样,您可以使用其键获取给定用户属性的未引用值。

  • 在 MySQL 8.0.22 之前,任何人都可以访问USER_ATTRIBUTES的内容。从 MySQL 8.0.22 开始,可以按以下方式访问USER_ATTRIBUTES的内容:

    • 如果:

      • 当前线程是一个复制线程。

      • 访问控制系统尚未初始化(例如,服务器是使用--skip-grant-tables选项启动的)。

      • 当前经过身份验证的帐户具有对mysql.user系统表的UPDATESELECT权限。

      • 当前经过身份验证的帐户具有CREATE USERSYSTEM_USER权限。

    • 否则,当前经过身份验证的账户可以看到该账户的行。此外,如果该账户具有CREATE USER权限但没有SYSTEM_USER权限,它可以看到所有其他没有SYSTEM_USER权限的账户的行。

有关指定账户注释和属性的更多信息,请参阅第 15.7.1.3 节,“CREATE USER Statement”。

28.3.47 INFORMATION_SCHEMA USER_PRIVILEGES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-user-privileges-table.html

USER_PRIVILEGES 表提供有关全局权限的信息。它的值来自于 mysql.user 系统表。

USER_PRIVILEGES 表包含以下列:

  • GRANTEE

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

  • TABLE_CATALOG

    目录的名称。该值始终为 def

  • PRIVILEGE_TYPE

    授予的权限。该值可以是在全局级别授予的任何权限;请参阅 Section 15.7.1.6, “GRANT Statement”。每行列出一个权限,因此每个被授予权限的受让人都有一行。

  • IS_GRANTABLE

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

注意

  • USER_PRIVILEGES 是一个非标准的 INFORMATION_SCHEMA 表。

以下语句等价:

SELECT ... FROM INFORMATION_SCHEMA.USER_PRIVILEGES

SHOW GRANTS ...

28.3.48 The INFORMATION_SCHEMA VIEWS Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-views-table.html

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

VIEWS 表包含以下列:

  • TABLE_CATALOG

    视图所属目录的名称。该值始终为 def

  • TABLE_SCHEMA

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

  • TABLE_NAME

    视图的名称。

  • VIEW_DEFINITION

    提供视图定义的 SELECT 语句。该列包含 SHOW CREATE VIEW 生成的 Create Table 列中的大部分内容。跳过 SELECT 前的单词和跳过 WITH CHECK OPTION 前的单词。假设原始语句为:

    CREATE VIEW v AS
      SELECT s2,s1 FROM t
      WHERE s1 > 5
      ORDER BY s1
      WITH CHECK OPTION;
    

    然后视图定义如下:

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

    CHECK_OPTION 属性的值。该值为 NONECASCADELOCAL 中的一个。

  • IS_UPDATABLE

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

    如果视图不可更新,则诸如 UPDATEDELETEINSERT 等语句是非法的并将被拒绝。(即使视图是可更新的,也可能无法向其插入数据;有关详细信息,请参阅 Section 27.5.3, “Updatable and Insertable Views”。)

  • DEFINER

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

  • SECURITY_TYPE

    视图的 SQL SECURITY 特性。该值为 DEFINERINVOKER 中的一个。

  • CHARACTER_SET_CLIENT

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

  • COLLATION_CONNECTION

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

注意事项

MySQL 允许不同的sql_mode设置告诉服务器支持的 SQL 语法类型。例如,您可以使用ANSI SQL 模式来确保 MySQL 正确解释标准 SQL 连接运算符,双竖线(||),在您的查询中。如果您创建一个连接项目的视图,您可能担心将sql_mode设置更改为与ANSI不同的值会导致视图无效。但事实并非如此。无论您如何编写视图定义,MySQL 始终以相同的方式存储它,即规范形式。以下是一个示例,显示服务器如何将双竖线连接运算符更改为CONCAT()函数:

mysql> SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
       WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+
| VIEW_DEFINITION                  |
+----------------------------------+
| select concat('a','b') AS `col1` |
+----------------------------------+
1 row in set (0.00 sec)

将视图定义存储为规范形式的优势在于,稍后对sql_mode值的更改不会影响视图的结果。然而,另一个结果是,服务器会剥离SELECT之前的注释。

28.3.49 The INFORMATION_SCHEMA VIEW_ROUTINE_USAGE Table

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-view-routine-usage-table.html

VIEW_ROUTINE_USAGE 表(自 MySQL 8.0.13 起可用)提供有关视图定义中使用的存储函数的信息。该表不列出有关内置(本机)函数或在定义中使用的可加载函数的信息。

您只能查看您拥有某些权限的视图信息,以及您拥有某些权限的函数信息。

VIEW_ROUTINE_USAGE 表具有以下列:

  • TABLE_CATALOG

    视图所属的目录的名称。此值始终为def

  • TABLE_SCHEMA

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

  • TABLE_NAME

    视图的名称。

  • SPECIFIC_CATALOG

    视图定义中使用的函数所属的目录名称。此值始终为def

  • SPECIFIC_SCHEMA

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

  • SPECIFIC_NAME

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

28.3.50 信息模式 VIEW_TABLE_USAGE 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-view-table-usage-table.html

VIEW_TABLE_USAGE 表(自 MySQL 8.0.13 起可用)提供了关于视图定义中使用的表和视图的信息。

您只能查看您拥有某些权限的视图信息,以及您拥有某些权限的表信息。

VIEW_TABLE_USAGE 表包含以下列:

  • VIEW_CATALOG

    视图所属的目录的名称。该值始终为def

  • VIEW_SCHEMA

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

  • VIEW_NAME

    视图的名称。

  • TABLE_CATALOG

    视图定义中使用的表或视图所属的目录名称。该值始终为def

  • TABLE_SCHEMA

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

  • TABLE_NAME

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

28.4 INFORMATION_SCHEMA InnoDB 表

原文:dev.mysql.com/doc/refman/8.0/en/innodb-information-schema-tables.html

28.4.1 INFORMATION_SCHEMA InnoDB 表参考

28.4.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE 表

28.4.3 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU 表

28.4.4 INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS 表

28.4.5 INFORMATION_SCHEMA INNODB_CACHED_INDEXES 表

28.4.6 INFORMATION_SCHEMA INNODB_CMP 和 INNODB_CMP_RESET 表

28.4.7 INFORMATION_SCHEMA INNODB_CMPMEM 和 INNODB_CMPMEM_RESET 表

28.4.8 INFORMATION_SCHEMA INNODB_CMP_PER_INDEX 和 INNODB_CMP_PER_INDEX_RESET 表

28.4.9 INFORMATION_SCHEMA INNODB_COLUMNS 表

28.4.10 INFORMATION_SCHEMA INNODB_DATAFILES 表

28.4.11 INFORMATION_SCHEMA INNODB_FIELDS 表

28.4.12 INFORMATION_SCHEMA INNODB_FOREIGN 表

28.4.13 INFORMATION_SCHEMA INNODB_FOREIGN_COLS 表

28.4.14 INFORMATION_SCHEMA INNODB_FT_BEING_DELETED 表

28.4.15 INFORMATION_SCHEMA INNODB_FT_CONFIG 表

28.4.16 INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD 表

28.4.17 INFORMATION_SCHEMA INNODB_FT_DELETED 表

28.4.18 INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE 表

28.4.19 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE 表

28.4.20 INFORMATION_SCHEMA INNODB_INDEXES 表

28.4.21 INFORMATION_SCHEMA INNODB_METRICS 表

28.4.22 INFORMATION_SCHEMA INNODB_SESSION_TEMP_TABLESPACES 表

28.4.23 INFORMATION_SCHEMA INNODB_TABLES 表

28.4.24 INFORMATION_SCHEMA INNODB_TABLESPACES 表

28.4.25 INFORMATION_SCHEMA INNODB_TABLESPACES_BRIEF 表

28.4.26 INFORMATION_SCHEMA INNODB_TABLESTATS 视图

28.4.27 INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO 表

28.4.28 INFORMATION_SCHEMA INNODB_TRX 表

28.4.29 INFORMATION_SCHEMA INNODB_VIRTUAL 表

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

INFORMATION_SCHEMA InnoDB 表可用于监控正在进行的 InnoDB 活动,以便在问题出现之前检测效率低下的情况,或者解决性能和容量问题。随着数据库变得越来越大和繁忙,达到硬件容量的极限时,您需要监控和调整这些方面,以确保数据库正常运行。

28.4.1 INFORMATION_SCHEMA InnoDB 表参考

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-table-reference.html

以下表格总结了 INFORMATION_SCHEMA 中的 InnoDB 表。更详细的信息,请参阅各个表的描述。

表 28.3 INFORMATION_SCHEMA InnoDB 表

表名描述引入版本
INNODB_BUFFER_PAGEInnoDB 缓冲池中的页面
INNODB_BUFFER_PAGE_LRUInnoDB 缓冲池中页面的 LRU 排序
INNODB_BUFFER_POOL_STATSInnoDB 缓冲池统计信息
INNODB_CACHED_INDEXESInnoDB 缓冲池中每个索引缓存的索引页数
INNODB_CMP与压缩的 InnoDB 表相关的操作状态
INNODB_CMP_PER_INDEX与压缩的 InnoDB 表和索引相关的操作状态
INNODB_CMP_PER_INDEX_RESET与压缩的 InnoDB 表和索引相关的操作状态
INNODB_CMP_RESET与压缩的 InnoDB 表相关的操作状态
INNODB_CMPMEMInnoDB 缓冲池内压缩页面的状态
INNODB_CMPMEM_RESETInnoDB 缓冲池内压缩页面的状态
INNODB_COLUMNS每个 InnoDB 表中的列
INNODB_DATAFILESInnoDB 文件表和通用表空间的数据文件路径信息
INNODB_FIELDSInnoDB 索引的关键列
INNODB_FOREIGNInnoDB 外键元数据
INNODB_FOREIGN_COLSInnoDB 外键列状态信息
INNODB_FT_BEING_DELETEDINNODB_FT_DELETED 表的快照
INNODB_FT_CONFIGInnoDB 表全文索引和相关处理的元数据
INNODB_FT_DEFAULT_STOPWORDInnoDB 全文索引的默认停用词列表
INNODB_FT_DELETED从 InnoDB 表全文索引中删除的行
INNODB_FT_INDEX_CACHEInnoDB 全文索引中新插入行的标记信息
INNODB_FT_INDEX_TABLE用于处理针对 InnoDB 表全文索引的文本搜索的倒排索引信息
INNODB_INDEXESInnoDB 索引元数据
INNODB_METRICSInnoDB 性能信息
INNODB_SESSION_TEMP_TABLESPACES会话临时表空间元数据8.0.13
INNODB_TABLESInnoDB 表元数据
INNODB_TABLESPACESInnoDB 按表存储、通用和撤销表空间元数据
INNODB_TABLESPACES_BRIEF简要��按表存储、通用、撤销和系统表空间元数据
INNODB_TABLESTATSInnoDB 表低级状态信息
INNODB_TEMP_TABLE_INFO关于活跃的用户创建的 InnoDB 临时表的信息
INNODB_TRX活跃的 InnoDB 事务信息
INNODB_VIRTUALInnoDB 虚拟生成列元数据
表名描述引入版本

28.4.2 INFORMATION_SCHEMA INNODB_BUFFER_PAGE 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-buffer-page-table.html

INNODB_BUFFER_PAGE表提供了关于InnoDB缓冲池中每个页面的信息。

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

警告

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

INNODB_BUFFER_PAGE表具有以下列:

  • POOL_ID

    缓冲池 ID。这是一个标识符,用于区分多个缓冲池实例。

  • 块 ID

    缓冲池块 ID。

  • 空间

    表空间 ID;与INNODB_TABLES.SPACE相同。

  • PAGE_NUMBER

    页码。

  • PAGE_TYPE

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

    表 28.4 INNODB_BUFFER_PAGE.PAGE_TYPE 值

    页面类型描述
    ALLOCATED新分配的页面
    BLOB未压缩的 BLOB 页面
    COMPRESSED_BLOB2后续压缩 BLOB 页面
    COMPRESSED_BLOB第一个压缩的 BLOB 页面
    ENCRYPTED_RTREE加密的 R 树
    EXTENT_DESCRIPTOR扩展描述符页面
    FILE_SPACE_HEADER文件空间头
    FIL_PAGE_TYPE_UNUSED未使用
    IBUF_BITMAP插入缓冲位图
    IBUF_FREE_LIST插入缓冲区空闲列表
    IBUF_INDEX插入缓冲索引
    INDEXB 树节点
    INODE索引节点
    LOB_DATA未压缩的 LOB 数据
    LOB_FIRST未压缩 LOB 的第一页
    LOB_INDEX未压缩的 LOB 索引
    PAGE_IO_COMPRESSED压缩页面
    PAGE_IO_COMPRESSED_ENCRYPTED压缩和加密页面
    PAGE_IO_ENCRYPTED加密页面
    RSEG_ARRAY回滚段数组
    RTREE_INDEXR 树索引
    SDI_BLOB未压缩的 SDI BLOB
    SDI_COMPRESSED_BLOB压缩的 SDI BLOB
    SDI_INDEXSDI 索引
    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的页面。如果服务器尚未访问表,则该列为NULL

  • INDEX_NAME

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

  • NUMBER_RECORDS

    页面内记录的数量。

  • DATA_SIZE

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

  • COMPRESSED_SIZE

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

  • PAGE_STATE

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

    表 28.5 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 = 写挂起,IO_PIN = 禁止重新定位和从刷新中移除。

  • IS_OLD

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

  • FREE_PAGE_CLOCK

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

  • IS_STALE

    页面是否过时。在 MySQL 8.0.24 中添加。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE LIMIT 1\G
*************************** 1\. row ***************************
            POOL_ID: 0
           BLOCK_ID: 0
              SPACE: 97
        PAGE_NUMBER: 2473
          PAGE_TYPE: INDEX
         FLUSH_TYPE: 1
          FIX_COUNT: 0
          IS_HASHED: YES
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: YES
    FREE_PAGE_CLOCK: 66
           IS_STALE: NO

注意

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

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

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

  • 当删除表、表行、分区或索引时,相关页面会保留在缓冲池中,直到需要空间存储其他数据。INNODB_BUFFER_PAGE 表报告这些页面的信息,直到它们从缓冲池中被驱逐。有关InnoDB如何管理缓冲池数据的更多信息,请参见第 17.5.1 节,“缓冲池”。

28.4.3 INFORMATION_SCHEMA INNODB_BUFFER_PAGE_LRU 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-buffer-page-lru-table.html

INNODB_BUFFER_PAGE_LRU 表提供了关于 InnoDB 缓冲池 中页面的信息;特别是它们在 LRU 列表中的顺序,该列表确定了缓冲池在变满时要从中驱逐的页面。

INNODB_BUFFER_PAGE_LRU 表与 INNODB_BUFFER_PAGE 表具有相同的列,但有一些例外。它具有 LRU_POSITIONCOMPRESSED 列,而不是 BLOCK_IDPAGE_STATE 列,并且不包括 IS_STALE 列。

有关使用信息和示例,请参见第 17.15.5 节,“InnoDB INFORMATION_SCHEMA Buffer Pool Tables”。

警告

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

INNODB_BUFFER_PAGE_LRU 表具有以下列:

  • POOL_ID

    缓冲池 ID。这是一个标识符,用于区分多个缓冲池实例。

  • LRU_POSITION

    页在 LRU 列表中的位置。

  • SPACE

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

  • PAGE_NUMBER

    页号。

  • PAGE_TYPE

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

    表 28.6 INNODB_BUFFER_PAGE_LRU.PAGE_TYPE 值

    页类型描述
    ALLOCATED新分配的页面
    BLOB未压缩的 BLOB 页面
    COMPRESSED_BLOB2后续压缩 BLOB 页面
    COMPRESSED_BLOB第一��压缩的 BLOB 页面
    ENCRYPTED_RTREE加密的 R 树
    EXTENT_DESCRIPTOR扩展描述符页面
    FILE_SPACE_HEADER文件空间头
    FIL_PAGE_TYPE_UNUSED未使用
    IBUF_BITMAP插入缓冲位图
    IBUF_FREE_LIST插入缓冲空闲列表
    IBUF_INDEX插入缓冲索引
    INDEXB 树节点
    INODE索引节点
    LOB_DATA未压缩的 LOB 数据
    LOB_FIRST未压缩 LOB 的第一页
    LOB_INDEX未压缩 LOB 索引
    PAGE_IO_COMPRESSED压缩页面
    PAGE_IO_COMPRESSED_ENCRYPTED压缩且加密的页面
    PAGE_IO_ENCRYPTED加密页面
    RSEG_ARRAY回滚段数组
    RTREE_INDEXR 树索引
    SDI_BLOB未压缩的 SDI BLOB
    SDI_COMPRESSED_BLOB压缩的 SDI BLOB
    SDI_INDEXSDI 索引
    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的页面。如果服务器尚未访问表,则列为NULL

  • 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

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

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1\. row ***************************
            POOL_ID: 0
       LRU_POSITION: 0
              SPACE: 97
        PAGE_NUMBER: 1984
          PAGE_TYPE: INDEX
         FLUSH_TYPE: 1
          FIX_COUNT: 0
          IS_HASHED: YES
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
         COMPRESSED: NO
             IO_FIX: IO_NONE
             IS_OLD: YES
    FREE_PAGE_CLOCK: 0

注意

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

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

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

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

  • 查询此表需要 MySQL 在遍历 LRU 列表时锁定表示缓冲池的数据结构,这可能会降低并发性,特别是对于具有多千兆字节缓冲池的系统。

  • 当删除表、表行、分区或索引时,相关页面会保留在缓冲池中,直到为其他数据需要空间。INNODB_BUFFER_PAGE_LRU表报告有关这些页面的信息,直到它们从缓冲池中被驱逐。有关InnoDB如何管理缓冲池数据的更多信息,请参见 Section 17.5.1, “Buffer Pool”。

28.4.4 INFORMATION_SCHEMA INNODB_BUFFER_POOL_STATS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-buffer-pool-stats-table.html

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

在缓冲池中使页面“年轻”或“非年轻”的概念是指在缓冲池数据结构的头部和尾部之间转移它们的过程。标记为“年轻”的页面需要更长时间才会从缓冲池中移除,而标记为“非年轻”的页面则更接近被 驱逐 的位置。

有关使用信息和示例,请参见 Section 17.15.5, “InnoDB INFORMATION_SCHEMA Buffer Pool Tables”。

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\. row ***************************
                         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语句查看有关此表的列的其他信息,包括数据类型和默认值。

28.4.5 INFORMATION_SCHEMA INNODB_CACHED_INDEXES 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-cached-indexes-table.html

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

有关相关用法信息和示例,请参见 Section 17.15.5, “InnoDB INFORMATION_SCHEMA Buffer Pool Tables”。

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\. row ***************************
      SPACE_ID: 4294967294
      INDEX_ID: 65
N_CACHED_PAGES: 45

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

SELECT
  tables.NAME AS table_name,
  indexes.NAME AS index_name,
  cached.N_CACHED_PAGES AS n_cached_pages
FROM
  INFORMATION_SCHEMA.INNODB_CACHED_INDEXES AS cached,
  INFORMATION_SCHEMA.INNODB_INDEXES AS indexes,
  INFORMATION_SCHEMA.INNODB_TABLES AS tables
WHERE
  cached.INDEX_ID = indexes.INDEX_ID
  AND indexes.TABLE_ID = tables.TABLE_ID;

注意

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

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

28.4.6 INFORMATION_SCHEMA INNODB_CMP 和 INNODB_CMP_RESET 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-cmp-table.html

INNODB_CMPINNODB_CMP_RESET表提供与压缩InnoDB表相关操作的状态信息。

INNODB_CMPINNODB_CMP_RESET表具有以下列:

  • PAGE_SIZE

    压缩页面的大小(以字节为单位)。

  • COMPRESS_OPS

    一个大小为PAGE_SIZE的 B 树页面被压缩的次数。每当创建一个空页面或未压缩修改日志的空间用尽时,页面就会被压缩。

  • COMPRESS_OPS_OK

    一个大小为PAGE_SIZE的 B 树页面成功压缩的次数。此计数永远不应超过COMPRESS_OPS

  • COMPRESS_TIME

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

  • UNCOMPRESS_OPS

    一个大小为PAGE_SIZE的 B 树页面被解压的次数。每当压缩失败或在缓冲池中不存在未压缩页面时首次访问���,B 树页面就会被解压。

  • UNCOMPRESS_TIME

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

示例

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

注意

  • 使用这些表来衡量数据库中InnoDB表压缩的有效性。

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

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

  • 有关使用信息,请参见第 17.9.1.4 节,“在运行时监视 InnoDB 表压缩”和第 17.15.1.3 节,“使用压缩信息模式表”。有关InnoDB表压缩的一般信息,请参见第 17.9 节,“InnoDB 表和页面压缩”。

28.4.7 INFORMATION_SCHEMA INNODB_CMPMEM 和 INNODB_CMPMEM_RESET 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-innodb-cmpmem-table.html

INNODB_CMPMEMINNODB_CMPMEM_RESET表提供有关InnoDB缓冲池内压缩的状态信息。

INNODB_CMPMEMINNODB_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\. row ***************************
           page_size: 1024
buffer_pool_instance: 0
          pages_used: 0
          pages_free: 0
      relocation_ops: 0
     relocation_time: 0
*************************** 2\. row ***************************
           page_size: 2048
buffer_pool_instance: 0
          pages_used: 0
          pages_free: 0
      relocation_ops: 0
     relocation_time: 0
*************************** 3\. row ***************************
           page_size: 4096
buffer_pool_instance: 0
          pages_used: 0
          pages_free: 0
      relocation_ops: 0
     relocation_time: 0
*************************** 4\. row ***************************
           page_size: 8192
buffer_pool_instance: 0
          pages_used: 7673
          pages_free: 15
      relocation_ops: 4638
     relocation_time: 0
*************************** 5\. row ***************************
           page_size: 16384
buffer_pool_instance: 0
          pages_used: 0
          pages_free: 0
      relocation_ops: 0
     relocation_time: 0

注意

  • 使用这些表来衡量数据库中InnoDB表的压缩效果。

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

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

  • 查看使用信息,请参阅第 17.9.1.4 节,“在运行时监视 InnoDB 表压缩”和第 17.15.1.3 节,“使用压缩信息模式表”。有关InnoDB表压缩的一般信息,请参阅第 17.9 节,“InnoDB 表和页压缩”。