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

65 阅读47分钟

MySQL8 中文参考(一百零五)

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

28.4.8 The INFORMATION_SCHEMA INNODB_CMP_PER_INDEX and INNODB_CMP_PER_INDEX_RESET Tables

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

INNODB_CMP_PER_INDEXINNODB_CMP_PER_INDEX_RESET 表提供与压缩 InnoDB表和索引相关的操作的状态信息,针对每个数据库、表和索引的组合分别提供统计信息,以帮助您评估特定表的压缩性能和实用性。

对于压缩的InnoDB表,表数据和所有二级索引都被压缩。在这种情况下,表数据被视为另一个索引,恰好包含所有列:聚簇索引。

INNODB_CMP_PER_INDEXINNODB_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\. row ***************************
  database_name: employees
     table_name: salaries
     index_name: PRIMARY
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 23451
uncompress_time: 4
*************************** 2\. row ***************************
  database_name: employees
     table_name: salaries
     index_name: emp_no
   compress_ops: 0
compress_ops_ok: 0
  compress_time: 0
 uncompress_ops: 1597
uncompress_time: 0

注意事项

  • 使用这些表来衡量特定表、索引或两者的 InnoDB 表 压缩 效果。

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

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

  • 由于为每个索引收集单独的测量数据会带来很大的性能开销,INNODB_CMP_PER_INDEXINNODB_CMP_PER_INDEX_RESET 统计数据默认不会被收集。在执行想要监视的压缩表操作之前,您必须启用 innodb_cmp_per_index_enabled 系统变量。

  • 有关使用信息,请参阅 Section 17.9.1.4, “Monitoring InnoDB Table Compression at Runtime” 和 Section 17.15.1.3, “Using the Compression Information Schema Tables”。有关 InnoDB 表压缩的一般信息,请参阅 Section 17.9, “InnoDB Table and Page Compression”。

28.4.9 INFORMATION_SCHEMA INNODB_COLUMNS 表

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

INNODB_COLUMNS 表提供关于 InnoDB 表列的元数据。

有关相关用法信息和示例,请参见 第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

INNODB_COLUMNS 表具有以下列:

  • TABLE_ID

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

  • NAME

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

  • POS

    列在表中的序数位置,从 0 开始顺序递增。当删除列时,剩余列将重新排序,使序列没有间隙。虚拟生成列的 POS 值编码列序号和列的序数位置。有关更多信息,请参见 第 28.4.29 节,“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 数据类型、字符集代码和可为 null。

  • LEN

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

  • HAS_DEFAULT

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

  • DEFAULT_VALUE

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

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_COLUMNS where TABLE_ID = 71\G
*************************** 1\. row ***************************
     TABLE_ID: 71
         NAME: col1
          POS: 0
        MTYPE: 6
       PRTYPE: 1027
          LEN: 4
  HAS_DEFAULT: 0
DEFAULT_VALUE: NULL
*************************** 2\. row ***************************
     TABLE_ID: 71
         NAME: col2
          POS: 1
        MTYPE: 2
       PRTYPE: 524542
          LEN: 10
  HAS_DEFAULT: 0
DEFAULT_VALUE: NULL
*************************** 3\. row ***************************
     TABLE_ID: 71
         NAME: col3
          POS: 2
        MTYPE: 1
       PRTYPE: 524303
          LEN: 10
  HAS_DEFAULT: 0
DEFAULT_VALUE: NULL

注意事项

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

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

28.4.10 The INFORMATION_SCHEMA INNODB_DATAFILES Table

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

INNODB_DATAFILES表提供了InnoDB file-per-table 和 general 表空间的数据文件路径信息。

有关使用信息和示例,请参见第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

注意

INFORMATION_SCHEMA FILES表报告了InnoDB表空间类型的元数据,包括 file-per-table 表空间、general 表空间、系统表空间、全局临时表空间和撤销表空间。

INNODB_DATAFILES表具有以下列:

  • SPACE

    表空间 ID。

  • PATH

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

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_DATAFILES WHERE SPACE = 57\G
*************************** 1\. row ***************************
SPACE: 57
 PATH: ./test/t1.ibd

注意

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

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

28.4.11 INFORMATION_SCHEMA INNODB_FIELDS 表

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

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

有关相关用法信息和示例,请参见第 17.15.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\. row ***************************
INDEX_ID: 117
    NAME: col1
     POS: 0

注意事项

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

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

28.4.12 INFORMATION_SCHEMA INNODB_FOREIGN 表

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

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

有关相关用法信息和示例,请参见第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

INNODB_FOREIGN 表包含以下列:

  • ID

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

  • FOR_NAME

    在这个外键关系中的子表 的名称。

  • REF_NAME

    在这个外键关系中的父表 的名称。

  • N_COLS

    外键索引中的列数。

  • TYPE

    一个包含有关外键列信息的位标志集合,通过 OR 运算在一起。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\. row ***************************
      ID: test/fk1
FOR_NAME: test/child
REF_NAME: test/parent
  N_COLS: 1
    TYPE: 1

注意

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

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

28.4.13 INFORMATION_SCHEMA INNODB_FOREIGN_COLS

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

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

有关使用信息和示例,请参见第 17.15.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\. row ***************************
          ID: test/fk1
FOR_COL_NAME: parent_id
REF_COL_NAME: id
         POS: 0

注意

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

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

28.4.14 INNODB_FT_BEING_DELETED 表

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

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

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

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

INNODB_FT_BEING_DELETED 表包含以下列:

  • DOC_ID

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

注意

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

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

  • 有关InnoDB FULLTEXT搜索的更多信息,请参见 Section 17.6.2.4, “InnoDB Full-Text Indexes”,以及 Section 14.9, “Full-Text Search Functions”。

28.4.15 INFORMATION_SCHEMA INNODB_FT_CONFIG 表

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

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

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

有关相关用法信息和示例,请参见 Section 17.15.4,“InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”。

INNODB_FT_CONFIG 表具有以下列:

  • KEY

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

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

    • optimize_checkpoint_limit:运行OPTIMIZE TABLE后停止的秒数。

    • synced_doc_id:下一个要发行的DOC_ID

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

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

  • VALUE

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

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_CONFIG;
+---------------------------+-------------------+
| KEY                       | VALUE             |
+---------------------------+-------------------+
| optimize_checkpoint_limit | 180               |
| synced_doc_id             | 0                 |
| stopword_table_name       | test/my_stopwords |
| use_stopword              | 1                 |
+---------------------------+-------------------+

注意

  • 此表仅用于内部配置。不用于统计信息目的。

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

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

  • 有关InnoDB FULLTEXT搜索的更多信息,请参见 Section 17.6.2.4,“InnoDB Full-Text Indexes”,以及 Section 14.9,“Full-Text Search Functions”。

28.4.16 INFORMATION_SCHEMA INNODB_FT_DEFAULT_STOPWORD 表

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

INNODB_FT_DEFAULT_STOPWORD表保存了在InnoDB表上创建FULLTEXT索引时默认使用的停用词列表。有关默认InnoDB停用词列表以及如何定义自己的停用词列表的信息,请参见第 14.9.4 节,“Full-Text Stopwords”。

有关使用信息和示例,请参见第 17.15.4 节,“InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”。

INNODB_FT_DEFAULT_STOPWORD表具有以下列:

  • value

    作为InnoDB表上FULLTEXT索引的默认停用词使用的单词。如果使用innodb_ft_server_stopword_tableinnodb_ft_user_stopword_table系统变量覆盖默认停用词处理,则不使用此单词。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_FT_DEFAULT_STOPWORD;
+-------+
| value |
+-------+
| a     |
| about |
| an    |
| are   |
| as    |
| at    |
| be    |
| by    |
| com   |
| de    |
| en    |
| for   |
| from  |
| how   |
| i     |
| in    |
| is    |
| it    |
| la    |
| of    |
| on    |
| or    |
| that  |
| the   |
| this  |
| to    |
| was   |
| what  |
| when  |
| where |
| who   |
| will  |
| with  |
| und   |
| the   |
| www   |
+-------+
36 rows in set (0.00 sec)

注意

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

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

  • 有关InnoDB FULLTEXT搜索的更多信息,请参见第 17.6.2.4 节,“InnoDB Full-Text Indexes”和第 14.9 节,“Full-Text Search Functions”。

28.4.17 INFORMATION_SCHEMA INNODB_FT_DELETED 表

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

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

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

有关相关用法信息和示例,请参见 Section 17.15.4, “InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”。

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 |
+--------+

注意

  • 你必须拥有PROCESS权限才能查询这个表。

  • 使用INFORMATION_SCHEMA COLUMNS表或SHOW COLUMNS语句查看关于这个表的列的额外信息,包括数据类型和默认值。

  • 关于InnoDBFULLTEXT搜索的更多信息,请参阅 Section 17.6.2.4, “InnoDB Full-Text Indexes”和 Section 14.9, “Full-Text Search Functions”。

28.4.18 INFORMATION_SCHEMA INNODB_FT_INDEX_CACHE 表

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

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

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

有关相关用法信息和示例,请参见第 17.15.4 节,“InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”。

INNODB_FT_INDEX_CACHE 表具有以下列:

  • WORD

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

  • FIRST_DOC_ID

    这个单词在FULLTEXT索引中首次出现的文档 ID。

  • LAST_DOC_ID

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

  • DOC_COUNT

    这个单词在FULLTEXT索引中出现的行数。同一个单词可以在缓存表中出现多次,每次都对应DOC_IDPOSITION值的组合。

  • 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 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 | POSITION |
    +------------+-----------+--------+----------+
    | 1001       |         1 |      4 |        0 |
    | after      |         1 |      2 |       22 |
    | comparison |         1 |      5 |       44 |
    | configured |         1 |      6 |       20 |
    | database   |         2 |      1 |       31 |
    +------------+-----------+--------+----------+
    
  • 您必须具有PROCESS权限才能查询此表。

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

  • 关于InnoDB FULLTEXT搜索的更多信息,请参阅 Section 17.6.2.4, “InnoDB Full-Text Indexes”和 Section 14.9, “Full-Text Search Functions”。

28.4.19 INFORMATION_SCHEMA INNODB_FT_INDEX_TABLE 表

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

INNODB_FT_INDEX_TABLE表提供了关于用于处理针对InnoDB表的FULLTEXT索引的文本搜索的倒排索引的信息。

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

有关相关用法信息和示例,请参见 Section 17.15.4,“InnoDB INFORMATION_SCHEMA FULLTEXT Index Tables”。

INNODB_FT_INDEX_TABLE表具有以下列:

  • WORD

    FULLTEXT的文本中提取的一个单词。

  • FIRST_DOC_ID

    此单词在FULLTEXT索引中首次出现的文档 ID。

  • LAST_DOC_ID

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

  • DOC_COUNT

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

  • 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索引缓存刷新到磁盘。这可以通过在启用innodb_optimize_fulltext_only系统变量的情况下对带有索引的表运行OPTIMIZE TABLE操作来实现。(示例在最后再次禁用该变量,因为它只打算暂时启用。)

    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 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;
    +---------------+----------+----------+----------+
    | Table         | Op       | Msg_type | Msg_text |
    +---------------+----------+----------+----------+
    | test.articles | optimize | status   | OK       |
    +---------------+----------+----------+----------+
    
    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 | POSITION |
    +------------+-----------+--------+----------+
    | 1001       |         1 |      4 |        0 |
    | after      |         1 |      2 |       22 |
    | comparison |         1 |      5 |       44 |
    | configured |         1 |      6 |       20 |
    | database   |         2 |      1 |       31 |
    +------------+-----------+--------+----------+
    
    mysql> SET GLOBAL innodb_optimize_fulltext_only=OFF;
    
  • 你必须拥有PROCESS权限才能查询这个表。

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

  • 有关InnoDB FULLTEXT搜索的更多信息,请参见 Section 17.6.2.4, “InnoDB Full-Text Indexes”,以及 Section 14.9, “Full-Text Search Functions”。

28.4.20 The INFORMATION_SCHEMA INNODB_INDEXES Table

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

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

有关使用信息和示例,请参见 第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

INNODB_INDEXES 表具有以下列:

  • INDEX_ID

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

  • NAME

    索引的名称。大多数由 InnoDB 隐式创建的索引具有一致的名称,但索引名称不一定是唯一的。例如:主键索引的 PRIMARY,表示主键的索引的 GEN_CLUST_INDEX,以及外键约束的 ID_INDFOR_INDREF_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%。有关更多信息,请参见第 17.8.11 节,“配置索引页面合并阈值”。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_INDEXES WHERE TABLE_ID = 34\G
*************************** 1\. row ***************************
       INDEX_ID: 39
           NAME: GEN_CLUST_INDEX
       TABLE_ID: 34
           TYPE: 1
       N_FIELDS: 0
        PAGE_NO: 3
          SPACE: 23
MERGE_THRESHOLD: 50
*************************** 2\. row ***************************
       INDEX_ID: 40
           NAME: i1
       TABLE_ID: 34
           TYPE: 0
       N_FIELDS: 1
        PAGE_NO: 4
          SPACE: 23
MERGE_THRESHOLD: 50

注意

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

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

28.4.21 INFORMATION_SCHEMA INNODB_METRICS 表

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

INNODB_METRICS表提供各种InnoDB性能信息,补充了InnoDB性能模式表的特定关注领域。通过简单的查询,您可以检查系统的整体健康状况。通过更详细的查询,您可以诊断性能瓶颈、资源短缺和应用程序问题等问题。

每个监视器代表InnoDB源代码中的一个点,用于收集计数器信息。每个计数器可以启动、停止和重置。您还可以针对它们的共同模块名称执行这些操作的一组计数器。

默认情况下,收集的数据相对较少。要启动、停止和重置计数器,请设置以下系统变量之一innodb_monitor_enableinnodb_monitor_disableinnodb_monitor_resetinnodb_monitor_reset_all,使用计数器的名称、模块的名称、使用“%”字符进行名称的通配符匹配,或者特殊关键字all

有关使用信息,请参见第 17.15.6 节,“InnoDB INFORMATION_SCHEMA Metrics Table”。

INNODB_METRICS表具有以下列:

  • NAME

    计数器的唯一名称。

  • SUBSYSTEM

    应用于InnoDB的指标方面。

  • COUNT

    自计数器启用以来的值。

  • MAX_COUNT

    自计数器启用以来的最大值。

  • MIN_COUNT

    自计数器启用以来的最小值。

  • AVG_COUNT

    自计数器启用以来的平均值。

  • COUNT_RESET

    自上次重置以来的计数器值。(_RESET列就像秒表上的圈数计数器:您可以测量某个时间间隔内的活动,而累积数据仍然可在COUNTMAX_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\. row ***************************
           NAME: 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
         STATUS: enabled
           TYPE: status_counter
        COMMENT: Number of rows inserted

笔记

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

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

  • 事务计数器COUNT的值可能与性能模式EVENTS_TRANSACTIONS_SUMMARY表中报告的事务事件数量不同。 InnoDB仅计算其执行的事务,而性能模式收集由服务器发起的所有未中止事务的事件,包括空事务。

28.4.22 The INFORMATION_SCHEMA INNODB_SESSION_TEMP_TABLESPACES Table

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

INNODB_SESSION_TEMP_TABLESPACES表提供有关用于内部和用户创建的临时表的会话临时表空间的元数据。此表在 MySQL 8.0.13 中添加。

INNODB_SESSION_TEMP_TABLESPACES表具有以下列:

  • ID

    进程或会话 ID。

  • 空间

    表空间 ID。为会话临时表空间保留了 40 万个空间 ID 范围。每次服务器启动时都会重新创建会话临时表空间。在关闭服务器时,空间 ID 不会持久化,并且可能会被重用。

  • 路径

    表空间数据文件路径。会话临时表空间具有ibt文件扩展名。

  • 大小

    表空间的大小,以字节为单位。

  • 状态

    表空间的状态。ACTIVE表示该表空间当前被会话使用。INACTIVE表示该表空间在可用会话临时表空间池中。

  • 目的

    表空间的目的。INTRINSIC表示该表空间用于优化内部临时表,由优化器使用。SLAVE表示该表空间用于在复制从库上存储用户创建的临时表。USER表示该表空间用于用户创建的临时表。NONE表示该表空间未被使用。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_SESSION_TEMP_TABLESPACES;
+----+------------+----------------------------+-------+----------+-----------+
| ID | SPACE      | PATH                       | SIZE  | STATE    | PURPOSE   |
+----+------------+----------------------------+-------+----------+-----------+
|  8 | 4294566162 | ./#innodb_temp/temp_10.ibt | 81920 | ACTIVE   | INTRINSIC |
|  8 | 4294566161 | ./#innodb_temp/temp_9.ibt  | 98304 | ACTIVE   | USER      |
|  0 | 4294566153 | ./#innodb_temp/temp_1.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566154 | ./#innodb_temp/temp_2.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566155 | ./#innodb_temp/temp_3.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566156 | ./#innodb_temp/temp_4.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566157 | ./#innodb_temp/temp_5.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566158 | ./#innodb_temp/temp_6.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566159 | ./#innodb_temp/temp_7.ibt  | 81920 | INACTIVE | NONE      |
|  0 | 4294566160 | ./#innodb_temp/temp_8.ibt  | 81920 | INACTIVE | NONE      |
+----+------------+----------------------------+-------+----------+-----------+

注意

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

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

28.4.23 INFORMATION_SCHEMA INNODB_TABLES 表

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

INNODB_TABLES表提供关于InnoDB表的元数据。

有关相关用法信息和示例,请参见第 17.15.3 节,“InnoDB INFORMATION_SCHEMA 模式对象表”。

INNODB_TABLES表具有以下列:

  • TABLE_ID

    InnoDB表的标识符。此值在实例中的所有数据库中是唯一的。

  • NAME

    表的名称,前面加上适当的模式(数据库)名称(例如,test/t1)。数据库和用户表的名称与它们最初定义时的大小写相同,可能受到lower_case_table_names设置的影响。

  • FLAG

    代表表格式和存储特性的位级信息的数值。

  • N_COLS

    表中的列数。报告的数字包括InnoDB创建的三个隐藏列(DB_ROW_IDDB_TRX_IDDB_ROLL_PTR)。报告的数字还包括虚拟生成列(如果存在)。

  • SPACE

    表所在表空间的标识符。0 表示InnoDB系统表空间。任何其他数字表示文件表空间或通用表空间。在TRUNCATE TABLE语句之后,此标识符保持不变。对于文件表空间,此标识符在实例中的所有数据库中对表是唯一的。

  • ROW_FORMAT

    表的行格式(CompactRedundantDynamicCompressed)。

  • ZIP_PAGE_SIZE

    压缩页大小。仅适用于行格式为Compressed的表。

  • SPACE_TYPE

    表所属的表空间类型。可能的值包括系统表空间的System,通用表空间的General和每个表的文件表空间的Single。使用CREATE TABLEALTER TABLE TABLESPACE=innodb_system分配给系统表空间的表具有SPACE_TYPEGeneral。有关更多信息,请参见CREATE TABLESPACE

  • INSTANT_COLS

    在使用ALTER TABLE ... ADD COLUMNALGORITHM=INSTANT添加第一个瞬时列之前存在的列数。自 MySQL 8.0.29 起,不再使用此列,但继续显示在 MySQL 8.0.29 之前瞬时添加列的表的信息。

  • TOTAL_ROW_VERSIONS

    表的行版本数量。初始值为 0。通过增加或删除列的ALTER TABLE ... ALGORITHM=INSTANT操作来递增该值。当具有瞬时添加或删除列的表由于表重建的ALTER TABLEOPTIMIZE TABLE操作而重建时,该值将重置为 0。有关更多信息,请参见列操作。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLES WHERE TABLE_ID = 214\G
*************************** 1\. row ***************************
          TABLE_ID: 1064
              NAME: test/t1
              FLAG: 33
            N_COLS: 6
             SPACE: 3
        ROW_FORMAT: Dynamic
     ZIP_PAGE_SIZE: 0
        SPACE_TYPE: Single
      INSTANT_COLS: 0
TOTAL_ROW_VERSIONS: 3

注意

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

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

28.4.24 INFORMATION_SCHEMA INNODB_TABLESPACES

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

INNODB_TABLESPACES 表提供关于 InnoDB 文件表空间、通用表空间和撤销表空间的元数据。

有关相关用法信息和示例,请参见 第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

注意

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

INNODB_TABLESPACES 表具有以下列:

  • SPACE

    表空间 ID。

  • NAME

    模式(数据库)和表名。

  • FLAG

    代表表空间格式和存储特性的位级信息的数值。

  • ROW_FORMAT

    表空间行格式(Compact or RedundantDynamicCompressed,或 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的透明页压缩功能有关。

  • AUTOEXTEND_SIZE

    表空间的自动扩展大小。此列在 MySQL 8.0.23 中添加。

  • 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\. row ***************************
         SPACE: 26
          NAME: test/t1
          FLAG: 0
    ROW_FORMAT: Compact or Redundant
     PAGE_SIZE: 16384
 ZIP_PAGE_SIZE: 0
    SPACE_TYPE: Single
 FS_BLOCK_SIZE: 4096
     FILE_SIZE: 98304
ALLOCATED_SIZE: 65536
AUTOEXTEND_SIZE: 0
SERVER_VERSION: 8.0.23
 SPACE_VERSION: 1
    ENCRYPTION: N
         STATE: normal

注意

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

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

28.4.25 The INFORMATION_SCHEMA INNODB_TABLESPACES_BRIEF Table

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

INNODB_TABLESPACES_BRIEF表为每个表、通用、撤销和系统表空间提供了文件表空间的空间 ID、名称、路径、标志和空间类型元数据。

INNODB_TABLESPACES提供相同的元数据,但加载速度较慢,因为表提供的其他元数据,如FS_BLOCK_SIZEFILE_SIZEALLOCATED_SIZE,必须动态加载。

空间和路径元数据也由INNODB_DATAFILES表提供。

INNODB_TABLESPACES_BRIEF表具有以下列:

  • SPACE

    表空间 ID。

  • NAME

    表空间名称。对于每个表的文件表空间,名称采用*schema/table_name*的形式。

  • PATH

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

  • FLAG

    代表表空间格式和存储特性的位级信息的数值。

  • SPACE_TYPE

    表空间类型。可能的值包括General表示InnoDB通用表空间,Single表示InnoDB每个表的文件表空间,System表示InnoDB系统表空间。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESPACES_BRIEF WHERE SPACE = 7;
+-------+---------+---------------+-------+------------+
| SPACE | NAME    | PATH          | FLAG  | SPACE_TYPE |
+-------+---------+---------------+-------+------------+
| 7     | test/t1 | ./test/t1.ibd | 16417 | Single     |
+-------+---------+---------------+-------+------------+

笔记

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

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

28.4.26 INFORMATION_SCHEMA INNODB_TABLESTATS 视图

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

INNODB_TABLESTATS 表提供了关于 InnoDB 表的低级状态信息的视图。这些数据由 MySQL 优化器使用,以计算在查询 InnoDB 表时要使用哪个索引。这些信息源自内存数据结构,而不是存储在磁盘上的数据。没有相应的内部 InnoDB 系统表。

如果自上次服务器重启以来已打开并且尚未从表缓存中过期的话,InnoDB 表将在此视图中表示。始终在此视图中表示具有持久统计信息的表。

仅对修改索引列的 DELETEUPDATE 操作更新表统计信息。仅修改非索引列的操作不会更新统计信息。

ANALYZE TABLE 清除表统计信息,并将 STATS_INITIALIZED 列设置为 Uninitialized。下次访问表时将重新收集统计信息。

有关相关用法信息和示例,请参见 第 17.15.3 节,“InnoDB INFORMATION_SCHEMA Schema Object Tables”。

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 操作修改的行数,如 INSERTUPDATEDELETE,还有外键级联操作。每次重新计算表统计信息时,此列将被重置。

  • AUTOINC

    任何基于自增操作的下一个要发行的数字。AUTOINC 值变化的速率取决于自增数已被请求多少次以及每次请求被授予多少个数字。

  • REF_COUNT

    当这个计数器达到零时,表元数据可以从表缓存中驱逐出去。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1\. row ***************************
         TABLE_ID: 71
             NAME: test/t1
STATS_INITIALIZED: 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 语句查看关于这个表的列的额外信息,包括数据类型和默认值。

28.4.27 INFORMATION_SCHEMA INNODB_TEMP_TABLE_INFO 表

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

INNODB_TEMP_TABLE_INFO表提供有关在InnoDB实例中活动的用户创建的InnoDB临时表的信息。它不提供有关优化器使用的内部InnoDB临时表的信息。INNODB_TEMP_TABLE_INFO表在首次查询时创建,仅存在于内存中,不会持久保存到磁盘。

有关用法信息和示例,请参见第 17.15.7 节,“InnoDB INFORMATION_SCHEMA 临时表信息表”。

INNODB_TEMP_TABLE_INFO表具有以下列:

  • TABLE_ID

    临时表的表 ID。

  • NAME

    临时表的名称。

  • N_COLS

    临时表中的列数。该数字包括InnoDB创建的三个隐藏列(DB_ROW_IDDB_TRX_IDDB_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\. row ***************************
TABLE_ID: 97
    NAME: #sql8c88_43_0
  N_COLS: 4
   SPACE: 76

注意

  • 此表主要用于专家级别的监视。

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

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

28.4.28 INFORMATION_SCHEMA INNODB_TRX 表

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

INNODB_TRX表提供有关当前在InnoDB内部执行的每个事务的信息,包括事务是否正在等待锁定,事务开始时间以及事务正在执行的 SQL 语句(如果有)。

用法信息,请参见第 17.15.2.1 节,“使用 InnoDB 事务和锁定信息”。

INNODB_TRX表具有以下列:

  • TRX_ID

    一个在InnoDB内部唯一的事务 ID 号。这些 ID 不会为只读和非锁定的事务创建。详情请参见第 10.5.3 节,“优化 InnoDB 只读事务”。

  • TRX_WEIGHT

    事务的权重,反映(但不一定是准确的)事务修改的行数和被事务锁定的行数。为了解决死锁,InnoDB选择具有最小权重的事务作为“受害者”进行回滚。已更改非事务表的事务被认为比其他事务更重,无论修改和锁定的行数如何。

  • TRX_STATE

    事务执行状态。允许的值为RUNNINGLOCK WAITROLLING BACKCOMMITTING

  • TRX_STARTED

    事务开始时间。

  • TRX_REQUESTED_LOCK_ID

    事务当前正在等待的锁的 ID,如果TRX_STATELOCK WAIT;否则为NULL。要获取有关锁的详细信息,请将此列与性能模式data_locks表的ENGINE_LOCK_ID列连接。

  • TRX_WAIT_STARTED

    事务开始等待锁的时间,如果TRX_STATELOCK WAIT;否则为NULL

  • TRX_MYSQL_THREAD_ID

    MySQL 线程 ID。要获取有关线程的详细信息,请将此列与INFORMATION_SCHEMA PROCESSLIST表的ID列连接,但请参见第 17.15.2.3 节,“InnoDB 事务和锁定信息的持久性和一致性”。

  • TRX_QUERY

    正在被事务执行的 SQL 语句。

  • TRX_OPERATION_STATE

    事务的当前操作,如果有的话;否则为NULL

  • TRX_TABLES_IN_USE

    在处理当前事务的 SQL 语句时使用的InnoDB表的数量。

  • TRX_TABLES_LOCKED

    当前 SQL 语句在哪些InnoDB表上有行锁。(因为这些是行锁,而不是表锁,所以尽管某些行被锁定,表通常仍然可以被多个事务读取和写入。)

  • 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 表示事务是一个不使用FOR UPDATELOCK IN SHARED MODE子句的SELECT语句,并且在启用autocommit的情况下执行,因此事务仅包含此一个语句。当此列和TRX_IS_READ_ONLY都为 1 时,InnoDB会优化事务以减少与更改表数据的事务相关的开销。

  • TRX_SCHEDULE_WEIGHT

    由内容感知事务调度(CATS)算法分配给等待锁的事务的事务调度权重。该值相对于其他事务的值。较高的值具有更大的权重。仅为处于LOCK WAIT状态的事务计算值,如TRX_STATE列所报告的那样。对于不等待锁的事务,将报告 NULL 值。TRX_SCHEDULE_WEIGHT值与由不同算法为不同目的计算的TRX_WEIGHT值不同。

示例

mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G
*************************** 1\. row ***************************
                    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: updating or deleting
         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
       trx_schedule_weight: NULL

注意事项

  • 使用此表格帮助诊断在高并发负载时发生的性能问题。其内容如 Section 17.15.2.3, “InnoDB 事务和锁信息的持久性和一致性”所述更新。

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

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

28.4.29 INFORMATION_SCHEMA INNODB_VIRTUAL 表

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

INNODB_VIRTUAL表提供关于InnoDB虚拟生成列和虚拟生成列所基于的列的元数据。

每个虚拟生成列所基于的列在INNODB_VIRTUAL表中都会出现一行。

INNODB_VIRTUAL表具有以下列:

  • TABLE_ID

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

  • POS

    虚拟生成列的位置值。该值很大,因为它编码了列序号和序号位置。用于计算该值的公式使用位操作:

    ((*n*th virtual generated column for the InnoDB instance + 1) << 16)
    + the ordinal position of the virtual generated column
    

    例如,如果InnoDB实例中的第一个虚拟生成列是表中的第三列,则公式为((0 + 1) << 16) + 2InnoDB实例中的第一个虚拟生成列始终为编号 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) GENERATED ALWAYS AS (5) VIRTUAL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
    

    但是,这样的列的元数据确实出现在INNODB_COLUMNS表中。

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

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

28.5 INFORMATION_SCHEMA 线程池表

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

28.5.1 INFORMATION_SCHEMA 线程池表参考

28.5.2 INFORMATION_SCHEMA TP_THREAD_GROUP_STATE 表

28.5.3 INFORMATION_SCHEMA TP_THREAD_GROUP_STATS 表

28.5.4 INFORMATION_SCHEMA TP_THREAD_STATE 表

注意

截至 MySQL 8.0.14,INFORMATION_SCHEMA线程池表也可作为性能模式表使用(参见第 29.12.16 节,“性能模式线程池表”:关于线程池线程组状态的信息

  • TP_THREAD_GROUP_STATS:线程组统计信息

  • TP_THREAD_STATE:关于线程池线程状态的信息

这些表中的行代表了某个时间点的快照。在TP_THREAD_STATE的情况下,线程组的所有行构成了一个时间点的快照。因此,MySQL 服务器在生成快照时持有线程组的互斥锁。但它不会同时持有所有线程组的互斥锁,以防止针对TP_THREAD_STATE的语句阻塞整个 MySQL 服务器。

INFORMATION_SCHEMA线程池表由各个插件实现,是否加载一个插件的决定可以独立于其他插件(参见[第 7.6.3.2 节,“线程池安装”](thread-pool-installation.html "7.6.3.2 Thread Pool Installation"))。但是,所有表的内容取决于启用线程池插件。如果启用了表插件但未启用线程池插件,则该表变为可见并且可以访问,但为空。

28.5.1 INFORMATION_SCHEMA 线程池表参考

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

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

表 28.7 INFORMATION_SCHEMA 线程池表

表名描述
TP_THREAD_GROUP_STATE线程池线程组状态
TP_THREAD_GROUP_STATS线程池线程组统计
TP_THREAD_STATE线程池线程信息

28.5.2 INFORMATION_SCHEMA TP_THREAD_GROUP_STATE 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tp-thread-group-state-table.html

注意

从 MySQL 8.0.14 开始,线程池INFORMATION_SCHEMA表也可以作为性能模式表使用。(参见 Section 29.12.16, “Performance Schema Thread Pool Tables”.)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表中列的描述,请参见 Section 29.12.16.1, “The tp_thread_group_state Table”. 性能模式tp_thread_group_state表具有相同的列。

28.5.3 INFORMATION_SCHEMA TP_THREAD_GROUP_STATS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-tp-thread-group-stats-table.html

注意

从 MySQL 8.0.14 开始,线程池INFORMATION_SCHEMA表也可以作为性能模式表使用。(参见 Section 29.12.16, “性能模式线程池表”.)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表中的列的描述,请参阅 Section 29.12.16.2, “tp_thread_group_stats 表”.性能模式tp_thread_group_stats表具有相同的列。

28.5.4 INFORMATION_SCHEMA TP_THREAD_STATE

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

注意

从 MySQL 8.0.14 开始,线程池 INFORMATION_SCHEMA 表也可以作为性能模式表使用。(参见 第 29.12.16 节,“性能模式线程池表”。)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 表中的列的描述,请参阅 第 29.12.16.3 节,“tp_thread_state 表”。性能模式 tp_thread_state 表具有相同的列。

28.6 INFORMATION_SCHEMA 连接控制表

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

28.6.1 INFORMATION_SCHEMA 连接控制表参考

28.6.2 INFORMATION_SCHEMA CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 表

以下部分描述了与 CONNECTION_CONTROL 插件相关的 INFORMATION_SCHEMA 表。

28.6.1 INFORMATION_SCHEMA 连接控制表参考

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

以下表格总结了INFORMATION_SCHEMA连接控制表。更详细的信息,请参阅各个表的描述。

表 28.8 INFORMATION_SCHEMA 连接控制表

表名描述
CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS每个账户当前连续失败连接尝试的次数

28.6.2 INFORMATION_SCHEMA CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 表

原文:dev.mysql.com/doc/refman/8.0/en/information-schema-connection-control-failed-login-attempts-table.html

该表提供有关每个帐户(用户/主机组合)的当前连续失败连接尝试次数的信息。

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插件,否则表内容始终为空。请参阅 Section 8.4.2, “The Connection-Control Plugins”。

  • 该表仅包含对于已经有一个或多个连续失败连接尝试而没有随后成功尝试的帐户的行。当帐户成功连接时,其失败连接计数将重置为零,并且服务器将删除与该帐户对应的任何行。

  • 在运行时为connection_control_failed_connections_threshold系统变量分配一个值会将所有累积的失败连接计数器重置为零,导致表变为空。

28.7 INFORMATION_SCHEMA MySQL Enterprise Firewall 表

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

28.7.1 INFORMATION_SCHEMA 防火墙表参考

28.7.2 INFORMATION_SCHEMA MYSQL_FIREWALL_USERS 表

28.7.3 INFORMATION_SCHEMA MYSQL_FIREWALL_WHITELIST 表

以下各节描述了与 MySQL Enterprise Firewall 相关的 INFORMATION_SCHEMA 表(参见 第 8.4.7 节,“MySQL Enterprise Firewall”)。它们提供了对防火墙内存数据缓存的视图。只有在适当的防火墙插件启用时,这些表才可用。

28.7.1 INFORMATION_SCHEMA 防火墙表参考

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

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

表 28.9 INFORMATION_SCHEMA 防火墙表

表名描述已弃用
MYSQL_FIREWALL_USERS账户配置文件的防火墙内存数据8.0.26
MYSQL_FIREWALL_WHITELIST账户配置文件的防火墙内存数据允许列表8.0.26

28.7.2 INFORMATION_SCHEMA MYSQL_FIREWALL_USERS 表

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

MYSQL_FIREWALL_USERS 表提供了对 MySQL 企业防火墙内存数据缓存的视图。它列出了注册的防火墙账户配置文件的名称和操作模式。它与提供防火墙数据持久存储的 mysql.firewall_users 系统表一起使用;请参阅 MySQL 企业防火墙表。

MYSQL_FIREWALL_USERS 表包含以下列:

  • USERHOST

    账户配置文件名称。每个账户名称的格式为 *user_name*@*host_name*

  • MODE

    该配置文件的当前操作模式。允许的模式值为 OFF, DETECTING, PROTECTING, RECORDING, 和 RESET。有关它们含义的详细信息,请参阅防火墙概念。

截至 MySQL 8.0.26,此表已被弃用,并可能在未来的 MySQL 版本中移除。请参阅将账户配置文件迁移到组配置文件。

28.7.3 INFORMATION_SCHEMA MYSQL_FIREWALL_WHITELIST

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

MYSQL_FIREWALL_WHITELIST 表提供了对 MySQL 企业防火墙内存数据缓存的视图。它列出了已注册防火墙帐户配置文件的允许列表规则。它与提供防火墙数据持久存储的mysql.firewall_whitelist系统表一起使用;请参阅 MySQL 企业防火墙表。

MYSQL_FIREWALL_WHITELIST 表具有以下列:

  • USERHOST

    帐户配置文件名称。每个帐户名称的格式为*user_name*@*host_name*

  • RULE

    表示配置文件中可接受的语句模式的规范化语句。配置文件允许列表是其规则的并集。

截至 MySQL 8.0.26,此表已被弃用,并可能在将来的 MySQL 版本中删除。请参阅将帐户配置文件迁移到组配置文件。

28.8 SHOW 语句的扩展

原文:dev.mysql.com/doc/refman/8.0/en/extended-show.html

一些扩展到 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 |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| KEY_COLUMN_USAGE                      |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| STATISTICS                            |
| TABLES                                |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
+---------------------------------------+

SHOW COLUMNSDESCRIBE 可以显示关于各个 INFORMATION_SCHEMA 表中列的信息。

SHOW 语句接受一个 LIKE 子句来限制显示的行,也允许使用 WHERE 子句来指定所选行必须满足的更一般条件:

SHOW CHARACTER SET
SHOW COLLATION
SHOW COLUMNS
SHOW DATABASES
SHOW FUNCTION STATUS
SHOW INDEX
SHOW OPEN TABLES
SHOW PROCEDURE STATUS
SHOW STATUS
SHOW TABLE STATUS
SHOW TABLES
SHOW TRIGGERS
SHOW VARIABLES

如果存在 WHERE 子句,则将其针对 SHOW 语句显示的列名进行评估。例如,SHOW CHARACTER SET 语句产生以下输出列:

mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | cp1252 West European        | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |
...

要在 SHOW CHARACTER SET 中使用 WHERE 子句,您需要引用那些列名。例如,以下语句显示了默认排序包含字符串 'japanese' 的字符集的信息:

mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+---------+---------------------------+---------------------+--------+
| Charset | Description               | Default collation   | Maxlen |
+---------+---------------------------+---------------------+--------+
| ujis    | EUC-JP Japanese           | ujis_japanese_ci    |      3 |
| sjis    | Shift-JIS Japanese        | sjis_japanese_ci    |      2 |
| cp932   | SJIS for Windows Japanese | cp932_japanese_ci   |      2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |      3 |
+---------+---------------------------+---------------------+--------+

此语句显示了多字节字符集:

mysql> SHOW CHARACTER SET WHERE Maxlen > 1;
+---------+---------------------------------+---------------------+--------+
| Charset | Description                     | Default collation   | Maxlen |
+---------+---------------------------------+---------------------+--------+
| big5    | Big5 Traditional Chinese        | big5_chinese_ci     |      2 |
| cp932   | SJIS for Windows Japanese       | cp932_japanese_ci   |      2 |
| eucjpms | UJIS for Windows Japanese       | eucjpms_japanese_ci |      3 |
| euckr   | EUC-KR Korean                   | euckr_korean_ci     |      2 |
| gb18030 | China National Standard GB18030 | gb18030_chinese_ci  |      4 |
| gb2312  | GB2312 Simplified Chinese       | gb2312_chinese_ci   |      2 |
| gbk     | GBK Simplified Chinese          | gbk_chinese_ci      |      2 |
| sjis    | Shift-JIS Japanese              | sjis_japanese_ci    |      2 |
| ucs2    | UCS-2 Unicode                   | ucs2_general_ci     |      2 |
| ujis    | EUC-JP Japanese                 | ujis_japanese_ci    |      3 |
| utf16   | UTF-16 Unicode                  | utf16_general_ci    |      4 |
| utf16le | UTF-16LE Unicode                | utf16le_general_ci  |      4 |
| utf32   | UTF-32 Unicode                  | utf32_general_ci    |      4 |
| utf8mb3 | UTF-8 Unicode                   | utf8mb3_general_ci  |      3 |
| utf8mb4 | UTF-8 Unicode                   | utf8mb4_0900_ai_ci  |      4 |
+---------+---------------------------------+---------------------+--------+

第二十九章 MySQL 性能模式

原文:dev.mysql.com/doc/refman/8.0/en/performance-schema.html

目录

29.1 Performance Schema 快速入门

29.2 Performance Schema 构建配置

29.3 Performance Schema 启动配置

29.4 Performance Schema 运行时配置

29.4.1 Performance Schema 事件定时

29.4.2 Performance Schema 事件过滤

29.4.3 事件预过滤

29.4.4 按仪器进行预过滤

29.4.5 按对象进行预过滤

29.4.6 按线程进行预过滤

29.4.7 按消费者进行预过滤

29.4.8 示例消费者配置

29.4.9 命名仪器或消费者以进行过滤操作

29.4.10 确定什么被仪器化

29.5 Performance Schema 查询

29.6 Performance Schema 仪器命名约定

29.7 Performance Schema 状态监控

29.8 Performance Schema 原子和分子事件

29.9 Performance Schema 当前和历史事件表

29.10 Performance Schema 语句摘要和抽样

29.11 Performance Schema 通用表特性

29.12 Performance Schema 表描述

29.12.1 Performance Schema 表参考

29.12.2 Performance Schema 设置表

29.12.3 Performance Schema 实例表

29.12.4 Performance Schema 等待事件表

29.12.5 Performance Schema 阶段事件表

29.12.6 Performance Schema 语句事件表

29.12.7 Performance Schema 事务表

29.12.8 Performance Schema 连接表

29.12.9 Performance Schema 连接属性表

29.12.10 Performance Schema User-Defined Variable Tables

29.12.11 Performance Schema Replication Tables

29.12.12 性能模式 NDB 集群表

29.12.13 Performance Schema Lock Tables

29.12.14 性能模式系统变量表

29.12.15 性能模式状态变量表

29.12.16 性能模式线程池表

29.12.17 性能模式防火墙表

29.12.18 Performance Schema Keyring Tables

29.12.19 性能模式克隆表

29.12.20 性能模式摘要表

29.12.21 Performance Schema Miscellaneous Tables

29.13 性能模式选项和变量参考

29.14 性能模式命令选项

29.15 性能模式系统变量

29.16 Performance Schema Status Variables

29.17 The Performance Schema Memory-Allocation Model

29.18 性能模式和插件

29.19 使用性能模式诊断问题

29.19.1 使用性能模式进行查询分析

29.19.2 获取父事件信息

29.20 性能模式的限制

MySQL 性能模式是用于监视 MySQL 服务器在低级别执行的功能。性能模式具有以下特点:

  • 性能模式提供了一种在运行时检查服务器内部执行的方式。它是使用PERFORMANCE_SCHEMA存储引擎和performance_schema数据库实现的。性能模式主要关注性能数据。这与INFORMATION_SCHEMA不同,后者用于元数据的检查。

  • Performance Schema 监视服务器事件。一个“事件”是服务器执行需要时间的任何操作,并且已经被仪器化以便收集时间信息。一般来说,事件可以是函数调用,等待操作系统,SQL 语句执行的阶段(如解析或排序),或整个语句或一组语句。事件收集提供了关于同步调用(如互斥锁)、文件和表 I/O、表锁等服务器和几个存储引擎的信息。

  • Performance Schema 事件与写入服务器二进制日志的事件(描述数据修改)和事件调度程序事件(存储程序的一种类型)是不同的。

  • Performance Schema 事件特定于给定的 MySQL 服务器实例。Performance Schema 表被视为服务器本地的,对它们的更改不会被复制或写入二进制日志。

  • 当前事件可用,以及事件历史和摘要。这使您能够确定仪器化活动被执行的次数以及所花费的时间。事件信息可用于显示特定线程的活动,或与特定对象(如互斥锁或文件)相关联的活动。

  • PERFORMANCE_SCHEMA存储引擎使用服务器源代码中的“仪器化点”收集事件数据。

  • 收集的事件存储在performance_schema数据库的表中。这些表可以像其他表一样使用SELECT语句进行查询。

  • Performance Schema 配置可以通过通过 SQL 语句更新performance_schema数据库中的表来动态修改。配置更改会立即影响数据收集。

  • Performance Schema 中的表是使用内存而不使用持久性磁盘存储的表。内容在服务器启动时重新填充,并在服务器关闭时丢弃。

  • 监控在 MySQL 支持的所有平台上都可用。

    可能存在一些限制:计时器类型可能因平台而异。适用于存储引擎的仪器可能并非所有存储引擎都实现。每个第三方引擎的仪器化是引擎维护者的责任。另请参阅 Section 29.20, “Restrictions on Performance Schema”。

  • 数据收集通过修改服务器源代码以添加仪器实现。与其他功能(如复制或事件调度程序)不同,Performance Schema 没有与之关联的单独线程。

Performance Schema 旨在在对服务器性能影响最小的情况下提供有关服务器执行的有用信息。实现遵循以下设计目标:

  • 激活性能模式不会改变服务器行为。例如,它不会导致线程调度发生变化,也不会导致查询执行计划(如EXPLAIN所示)发生变化。

  • 服务器监控持续进行,几乎没有额外开销。激活性能模式不会使服务器无法使用。

  • 解析器保持不变。没有新的关键字或语句。

  • 即使性能模式在内部失败,服务器代码的执行仍然正常进行。

  • 当在事件收集初始阶段或稍后在事件检索期间执行处理时有选择时,优先考虑使收集更快。这是因为收集是持续进行的,而检索是按需进行的,甚至可能根本不会发生。

  • 大多数性能模式表都有索引,这使得优化器可以访问除全表扫描之外的执行计划。有关更多信息,请参见第 10.2.4 节,“优化性能模式查询”。

  • 添加新的仪表点很容易。

  • 仪表化是有版本的。如果仪表化实现发生变化,先前仪表化的代码仍然可以正常工作。这有利于第三方插件的开发人员,因为不需要升级每个插件以与最新性能模式更改保持同步。

注意

MySQL sys模式是一组对象,提供方便访问性能模式收集的数据。sys模式默认安装。有关使用说明,请参见第三十章,“MySQL sys 模式”。