24.16 INFORMATION_SCHEMA PARTITIONStable

PARTITIONStable 提供有关 table 分区的信息。该 table 中的每一行都对应于分区 table 的单个分区或子分区。有关分区 table 的更多信息,请参见第 22 章,分区

PARTITIONStable 具有以下列:

  • TABLE_CATALOG

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

  • TABLE_SCHEMA

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

  • TABLE_NAME

包含分区的 table 的名称。

  • PARTITION_NAME

分区的名称。

  • SUBPARTITION_NAME

如果PARTITIONStable 行 table 示一个子分区,则为该子分区的名称;否则,为 0.否则NULL

  • PARTITION_ORDINAL_POSITION

所有分区的索引编制 Sequences 与定义的 Sequences 相同,其中1是分配给第一个分区的编号。索引可以随着分区的添加,删除和重组而改变;考虑到所有索引更改,此列中显示的数字反映了当前订单。

  • SUBPARTITION_ORDINAL_POSITION

给定分区中的子分区也以与在 table 中构建索引的方式相同的方式进行索引和重新索引。

  • PARTITION_METHOD

RANGELISTHASHLINEAR HASHKEYLINEAR KEY之一;也就是第 22.2 节“分区类型”中讨论的可用分区类型之一。

  • SUBPARTITION_METHOD

HASHLINEAR HASHKEYLINEAR KEY之一;也就是第 22.2.6 节“子分区”中讨论的可用子分区类型之一。

  • PARTITION_EXPRESSION

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

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

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

该 table 中分区的PARTITIONStable 行中的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              |
+----------------------+
  • SUBPARTITION_EXPRESSION

这与定义 table 的子分区的子分区 table 达式的工作方式相同,就像PARTITION_EXPRESSION定义 table 的分区所用的分区 table 达式一样。

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

  • PARTITION_DESCRIPTION

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

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

  • TABLE_ROWS

分区中 table 的行数。

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

对于NDBtable,您还可以使用ndb_descUtil 获取此信息。

  • AVG_ROW_LENGTH

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

对于NDBtable,您还可以使用ndb_descUtil 获取此信息。

  • DATA_LENGTH

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

对于NDBtable,您还可以使用ndb_descUtil 获取此信息。

  • MAX_DATA_LENGTH

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

对于NDBtable,您还可以使用ndb_descUtil 获取此信息。

  • INDEX_LENGTH

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

对于NDBtable 的分区,无论 table 使用隐式分区还是显式分区,INDEX_LENGTH列的值始终为 0.但是,您可以使用ndb_descUtil 获取等效信息。

  • DATA_FREE

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

对于NDBtable,您还可以使用ndb_descUtil 获取此信息。

  • CREATE_TIME

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

  • UPDATE_TIME

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

  • CHECK_TIME

上次检查该分区或子分区所属的 table 的时间。

对于分区的InnoDBtable,该值始终为NULL

  • CHECKSUM

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

  • PARTITION_COMMENT

Comments 文本(如果分区包含一个)。如果不是,则此值为空。

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

  • NODEGROUP

这是分区所属的节点组。这仅与 NDB 群集 table 有关;否则,该值始终为0

  • TABLESPACE_NAME

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

Notes

  • PARTITIONS是非标准的INFORMATION_SCHEMAtable。

  • 使用NDB以外的任何存储引擎且未分区的 table 在PARTITIONStable 中具有一行。但是,PARTITION_NAMESUBPARTITION_NAMEPARTITION_ORDINAL_POSITIONSUBPARTITION_ORDINAL_POSITIONPARTITION_METHODSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONPARTITION_DESCRIPTION列的值均为NULL。同样,在这种情况下,PARTITION_COMMENT列为空白。

  • 对于 NDB 群集中的每个数据节点,未明确分区的NDBtable 在PARTITIONStable 中都有一行。对于每个这样的行:

  • SUBPARTITION_NAMESUBPARTITION_ORDINAL_POSITIONSUBPARTITION_METHODPARTITION_EXPRESSIONSUBPARTITION_EXPRESSIONCREATE_TIMEUPDATE_TIMECHECK_TIMECHECKSUMTABLESPACE_NAME列均为NULL

    • PARTITION_METHOD始终是KEY

    • NODEGROUP列是default

    • PARTITION_EXPRESSIONPARTITION_COMMENT列为空。