Documentation Home
MySQL 8.0 参考手册  / 第 26 章 INFORMATION_SCHEMA 表  / 26.3 INFORMATION_SCHEMA 总表  /  21.3.14 INFORMATION_SCHEMA 分区表

21.3.14 INFORMATION_SCHEMA 分区表

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

PARTITIONS表有以下列:

  • TABLE_CATALOG

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

  • TABLE_SCHEMA

    表所属的数据库的名称。

  • TABLE_NAME

    包含分区的表的名称。

  • PARTITION_NAME

    分区的名称。

  • SUBPARTITION_NAME

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

  • PARTITION_ORDINAL_POSITION

    所有分区的索引顺序与它们定义的顺序相同,1编号是分配给第一个分区的编号。索引可以随着分区的添加、删除和重组而改变;此列显示的数字反映了当前顺序,并考虑了任何索引更改。

  • SUBPARTITION_ORDINAL_POSITION

    给定分区内的子分区也以与表内分区索引相同的方式进行索引和重新索引。

  • PARTITION_METHOD

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

  • SUBPARTITION_METHOD

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

  • PARTITION_EXPRESSION

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

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

    CREATE TABLE tp (
        c1 INT,
        c2 INT,
        c3 VARCHAR(25)
    )
    PARTITION BY HASH(c1 + c2)
    PARTITIONS 4;

    PARTITION_EXPRESSION此表中分区的 PARTITIONS表行中的列显示 ,c1 + c2如下所示:

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

    对于NDB未显式分区的表,此列为空。对于使用其他存储引擎且未分区的表,此列为NULL.

  • SUBPARTITION_EXPRESSION

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

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

  • PARTITION_DESCRIPTION

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

    对于PARTITION_METHOD不是RANGE或 的分区LIST,此列始终为 NULL

  • TABLE_ROWS

    分区中的表行数。

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

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

  • AVG_ROW_LENGTH

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

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

  • DATA_LENGTH

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

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

  • MAX_DATA_LENGTH

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

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

  • INDEX_LENGTH

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

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

  • DATA_FREE

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

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

  • CREATE_TIME

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

    在 MySQL 5.6.25 之前,对于分区 InnoDB表,此列始终为NULL. 正确的创建时间显示在 MySQL 5.6.25 及更高版本中。(漏洞 #17299181,漏洞 #69990)

  • UPDATE_TIME

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

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

  • CHECK_TIME

    上次检查此分区或子分区所属的表的时间。

    对于分区InnoDB表,此列始终为NULL

  • CHECKSUM

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

  • PARTITION_COMMENT

    评论的文本,如果分区有的话。如果不是,则此值为空。

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

  • NODEGROUP

    这是分区所属的节点组。对于 NDB Cluster 表,这始终是default. 对于使用非存储引擎的分区表 NDB,该值也是 default。否则,此列为空。

  • TABLESPACE_NAME

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

笔记

  • PARTITIONS是一个非标准 INFORMATION_SCHEMA表。

  • 使用除未分区以外的任何存储引擎 NDB且未分区的表在表中有一行PARTITIONS 。但是, PARTITION_NAMESUBPARTITION_NAMEPARTITION_ORDINAL_POSITIONSUBPARTITION_ORDINAL_POSITIONPARTITION_METHODSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONPARTITION_DESCRIPTION列的值都是 NULL。此外, PARTITION_COMMENT本例中的列为空白。

  • 对于 导航台集群中的每个数据节点,NDB未显式分区的表在表中有一行。PARTITIONS对于每个这样的行:

    • , SUBPARTITION_NAME, SUBPARTITION_ORDINAL_POSITION, SUBPARTITION_METHOD' SUBPARTITION_EXPRESSION, CREATE_TIME, UPDATE_TIME, CHECK_TIME, CHECKSUMTABLESPACE_NAME列都是 NULL

    • PARTITION_METHOD总是 KEY。 _

    • NODEGROUP列是 default

    • PARTITION_EXPRESSION列为 PARTITION_COMMENT空。