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
以下值之一:
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
此分区或子分区的索引文件长度(以字节为单位)。
对于使用隐式或显式分区机制的
NDB
表的分区,INDEX_LENGTH
列的值始终为 0。但是,您可以使用 ndb_desc 实用程序获取等效信息。DATA_FREE
分配给分区或子分区但未使用字节数。
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_NAME
、SUBPARTITION_NAME
、PARTITION_ORDINAL_POSITION
、SUBPARTITION_ORDINAL_POSITION
、PARTITION_METHOD
、SUBPARTITION_METHOD
、PARTITION_EXPRESSION
、SUBPARTITION_EXPRESSION
和PARTITION_DESCRIPTION
列的值都为NULL
。此外,在这种情况下,PARTITION_COMMENT
列为空。一个未明确分区的
NDB
表在PARTITIONS
表中为 NDB 集群中的每个数据节点都有一个行。对于每个这样的行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
列为空。