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
值RANGE
,LIST
,HASH
,LINEAR HASH
,KEY
或LINEAR KEY
之一;也就是第 22.2 节“分区类型”中讨论的可用分区类型之一。
SUBPARTITION_METHOD
值HASH
,LINEAR HASH
,KEY
或LINEAR KEY
之一;也就是第 22.2.6 节“子分区”中讨论的可用子分区类型之一。
PARTITION_EXPRESSION
创建 table 的当前分区方案的CREATE TABLE或ALTER 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
而不是RANGE
或LIST
的分区,此列始终为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_SCHEMA
table。 -
使用NDB以外的任何存储引擎且未分区的 table 在PARTITIONStable 中具有一行。但是,
PARTITION_NAME
,SUBPARTITION_NAME
,PARTITION_ORDINAL_POSITION
,SUBPARTITION_ORDINAL_POSITION
,PARTITION_METHOD
,SUBPARTITION_METHOD
,PARTITION_EXPRESSION
,SUBPARTITION_EXPRESSION
和PARTITION_DESCRIPTION
列的值均为NULL
。同样,在这种情况下,PARTITION_COMMENT
列为空白。 -
对于 NDB 群集中的每个数据节点,未明确分区的
NDB
table 在PARTITIONS
table 中都有一行。对于每个这样的行: -
SUBPARTITION_NAME
,SUBPARTITION_ORDINAL_POSITION
,SUBPARTITION_METHOD
,PARTITION_EXPRESSION
,SUBPARTITION_EXPRESSION
,CREATE_TIME
,UPDATE_TIME
,CHECK_TIME
,CHECKSUM
和TABLESPACE_NAME
列均为NULL
。-
PARTITION_METHOD
始终是KEY
。 -
NODEGROUP
列是default
。 -
PARTITION_EXPRESSION
和PARTITION_COMMENT
列为空。
-