文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  INFORMATION_SCHEMA PARTITIONS 表

28.3.21 INFORMATION_SCHEMA PARTITIONS 表

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

PARTITIONS 表包含以下列

  • TABLE_CATALOG

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

  • TABLE_SCHEMA

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

  • TABLE_NAME

    包含分区的表的名称。

  • PARTITION_NAME

    分区的名称。

  • SUBPARTITION_NAME

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

    对于 NDB:此值始终为 NULL.

  • PARTITION_ORDINAL_POSITION

    所有分区都按定义顺序进行索引,其中 1 是分配给第一个分区的数字。索引可能会随着分区添加、删除和重新组织而改变;此列中显示的数字反映了当前顺序,其中考虑了任何索引更改。

  • SUBPARTITION_ORDINAL_POSITION

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

  • PARTITION_METHOD

    以下值之一:RANGELISTHASHLINEAR HASHKEYLINEAR KEY;即,如 第 26.2 节,“分区类型” 中所述的可用分区类型之一。

  • SUBPARTITION_METHOD

    以下值之一:HASHLINEAR HASHKEYLINEAR KEY;即,如 第 26.2.6 节,“子分区” 中所述的可用子分区类型之一。

  • PARTITION_EXPRESSION

    CREATE TABLEALTER TABLE 语句中使用的分区函数表达式,该语句创建了表的当前分区方案。

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

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

    来自此表的某个分区在 PARTITIONS 表行中的 PARTITION_EXPRESSION 列显示 c1 + c2,如下所示

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

    对于未明确分区的表,此列始终为 NULL,无论存储引擎如何。

  • SUBPARTITION_EXPRESSION

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

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

  • PARTITION_DESCRIPTION

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

    对于 PARTITION_METHOD 不是 RANGELIST 的分区,此列始终为 NULL.

  • TABLE_ROWS

    分区中的表行数。

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

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

  • AVG_ROW_LENGTH

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

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

  • DATA_LENGTH

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

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

  • MAX_DATA_LENGTH

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

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

  • INDEX_LENGTH

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

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

  • DATA_FREE

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

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

  • CREATE_TIME

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

  • UPDATE_TIME

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

  • CHECK_TIME

    上次检查此分区或子分区所属表的日期。

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

  • CHECKSUM

    校验和值(如果有);否则为 NULL

  • PARTITION_COMMENT

    注释的文本(如果分区有注释)。如果没有,则此值为“”。

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

  • NODEGROUP

    这是分区所属的节点组。对于 NDB Cluster 表,它始终为 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 表中为 NDB 集群中的每个数据节点都有一个行。对于每个这样的行

    • SUBPARTITION_NAMESUBPARTITION_ORDINAL_POSITIONSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONCREATE_TIMEUPDATE_TIMECHECK_TIMECHECKSUMTABLESPACE_NAME 列都为 NULL

    • PARTITION_METHOD 始终为 AUTO

    • NODEGROUP 列为 default

    • PARTITION_COMMENT 列为空。