28.3.21 INFORMATION_SCHEMA PARTITIONS 表
PARTITIONS 表提供了关于表分区的信息。该表中的每一行对应于一个独立的分区或子分区。关于分区表的更多信息,请参见第26章,《分区》。
PARTITIONS 表具有以下列:
-
TABLE_ Catalog
该表所属的目录名称。该值始终为
def
。 -
TABLE_SCHEMA
该表所属的schema(数据库)名称。
-
TABLE_NAME
包含分区的表名称。
-
PARTITION_NAME
分区名称。
-
SUBPARTITION_NAME
如果PARTITIONS 表行表示子分区,则子分区名称;否则为
NULL
。对于NDB:该值始终为
NULL
。 -
PARTITION_ORDINAL_POSITION
所有分区都按定义的顺序索引,
1
是第一个分区所分配的号码。索引可以在添加、删除和重新组织分区时发生变化;显示的号码反映当前顺序,考虑了任何索引变化。 -
SUBPARTITION_ORDINAL_POSITION
在给定的分区中,子分区也以相同的方式索引和重新索引,就像表中的分区一样索引。
-
PARTITION_METHOD
其中之一是
RANGE
、LIST
、HASH
、LINEAR HASH
、KEY
或LINEAR KEY
之一;即讨论在第26.2节,“分区类型”中可用的分区类型之一。 -
SUBPARTITION_METHOD
其中之一是
HASH
、LINEAR HASH
、KEY
或LINEAR KEY
之一;即讨论在第26.2.6节,“子分区”中可用的子分区类型之一。 -
PARTITION_EXPRESSION
用于创建表当前分区方案的分区函数表达式,在
CREATE TABLE
或ALTER 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
不是RANGE
或LIST
的,这个列始终是NULL
。 -
TABLE_ROWS
表中的行数。
对于分区的InnoDB表,
TABLE_ROWS
列中的行数仅是一个用于SQL优化的估算值,并不总是精确的。 -
AVG_ROW_LENGTH
该分区或子分区中存储的行的平均长度,以字节为单位。这与
DATA_LENGTH
除以TABLE_ROWS
相同。 -
DATA_LENGTH
该分区或子分区中存储的所有行的总长度,以字节为单位,即该分区或子分区中的总字节数。
-
MAX_DATA_LENGTH
该分区或子分区可以存储的最大字节数。
-
INDEX_LENGTH
该分区或子分区索引文件的长度,单位为字节。
-
DATA_FREE
该分区或子分区已分配但未使用的字节数量。
-
CREATE_TIME
该分区或子分区创建的时间。
-
UPDATE_TIME
该分区或子分区最后修改的时间。
-
CHECK_TIME
该分区或子分区所属表的最后一次检查时间。
对于使用
InnoDB
存储引擎的分区表,这个值总是NULL
。 -
CHECKSUM
如果存在 checksum 值,则显示该值;否则显示
NULL
。 -
PARTITION_COMMENT
如果分区有注释,则显示注释的文本;否则为空字符串。
分区注释的最大长度定义为 1024 个字符,
PARTITION_COMMENT
列的显示宽度也为 1024 个字符,以匹配这个限制。 -
NODEGROUP
该分区所属的节点组。对于 NDB 集群表,这个值总是
default
。对于使用存储引擎其他于NDB
的分区表,这个值也总是default
。否则,该列为空。 -
TABLESPACE_NAME
该分区所属的表空间名称。这个值总是
DEFAULT
,除非表使用NDB
存储引擎(见本节末尾的Notes)。
-
PARTITIONS
是一个非标准的INFORMATION_SCHEMA
表。 -
使用除
NDB
外的存储引擎且未分区的表在PARTITIONS
表中只有一个行。然而,PARTITION_NAME
、SUBPARTITION_NAME
、PARTITION_ORDINAL_POSITION
、SUBPARTITION_ORDINAL_POSITION
、PARTITION_METHOD
、SUBPARTITION_METHOD
、PARTITION_EXPRESSION
、SUBPARTITION_EXPRESSION
和PARTITION_DESCRIPTION
列的值都是NULL
。此外,在这种情况下,PARTITION_COMMENT
列是空的。 -
一个未明确分区的
NDB
表在PARTITIONS
表中每个数据节点都有一个行。对于每一行:-
SUBPARTITION_NAME
、SUBPARTITION_ORDINAL_POSITION
、SUBPARTITION_METHOD
、PARTITION_EXPRESSION
、SUBPARTITION_EXPRESSION
、CREATE_TIME
、UPDATE_TIME
、CHECK_TIME
、CHECKSUM
和TABLESPACE_NAME
列的值都是NULL
。 -
PARTITION_METHOD
总是AUTO
。 -
NODEGROUP
列是default
。 -
PARTITION_COMMENT 列为空。
-