本文介绍了查看列存索引一致性视图的相关内容。
背景信息
列存索引(IMCI)在PolarDB一写多读架构的基础上以虚拟二级索引及数据异构的方式在单独的AP RO节点提供AP能力,以降低AP查询对现有集群尤其是主节点的影响。但这种方式为列存索引状态信息的展示带来了挑战,除数据字典中存放了极少量的元信息外,在主节点和普通RO节点上都查询不到列存索引相关的状态信息。当用户查询列存索引的状态信息(如索引构建状态、完成情况等)时,只能通过直连只读列存节点或者连接到开启了行列自动分流的集群地址才能查询。另外,如果集群中存在多个AP RO节点,使用集群地址查询到的状态信息可能是任意一个AP RO节点的状态信息,而无法知晓具体是哪个节点的状态信息,同时也无法获取所有列存节点的状态信息,只能逐个直连所有的AP RO节点分别进行查询。
为了解决这个问题,PolarDB提供了全局一致性视图功能。您可以在开启了列存索引功能的PolarDB集群内的任意节点查询列存索引状态信息。当开启了列存索引功能的PolarDB集群中添加了多个只读列存节点时,若需要查询INFORMATION_SCHEMA
库中IMCI相关的视图信息,则查询路由到的节点会将查询转发到所有当前注册的只读列存节点来获取对应节点上的列存索引状态信息,并在当前查询节点上将查询结果聚合后再返回给查询终端,且聚合结果中会添加一列Server_Id
(相当于管控页面的主机实例ID)以区分不同节点。
当连接的是列存节点直连地址时,您可以直接在
INFORMATION_SCHEMA
库中查询IMCI相关的视图。当连接的是多节点集群地址时,由数据库代理(Proxy)决定将请求路由到具体的节点执行,不再依赖行列自动分流开关。
适用版本
PolarDB MySQL版企业版集群要求如下:
若集群为PolarDB MySQL版8.0.1版本,则修订版本需为8.0.1.1.39及以上。
若集群为PolarDB MySQL版8.0.2版本,则修订版本需为8.0.2.2.20及以上。
参数说明
您可以在当前Session中通过SET命令来开启或关闭全局一致性视图功能。具体的参数值及其说明如下表:
参数名称 | 参数级别 | 说明 |
imci_infoschema_remote_access_method | Session(会话) | 开启或关闭全局一致性视图功能。取值范围如下:
|
相关命令
在添加非保留关键字IMCI的基础上,PolarDB为查询常用的列存索引状态添加了如下辅助命令,具体命令语法格式说明如下:
查询列存索引基本状态
命令格式:
SHOW IMCI INDEXES [option]
作用:相当于执行
SELECT * FROM INFORMATION_SCHEMA.IMCI_INDEXES;
命令。
查询列存索引扩展状态
命令格式:
SHOW IMCI INDEXES STATUS [option]
作用:相当于执行
SELECT * FROM INFORMATION_SCHEMA.IMCI_INDEX_STATS;
命令。
查询列存索引构建状态
命令格式:
SHOW IMCI INDEXES RECOVER STATUS [option]
作用:相当于执行
SELECT * FROM INFORMATION_SCHEMA.IMCI_ASYNC_DDL_STATS;
命令。
查询列存索引存储状态
命令格式:
SHOW IMCI INDEXES FILE [option]
作用:相当于执行
SELECT * FROM INFORMATION_SCHEMA.IMCI_DATA_FILES;
命令。
option格式说明
上述命令中的option参数支持的格式如下表:
option格式 | 说明 |
FOR table_name | 通过表名做等值过滤。相当于在SQL语句中添加 |
FOR db_name.table_name | 通过库名和表名做等值过滤。相当于添加 |
FROM db_name或IN db_name | 通过库名做等值过滤。相当于添加 |
示例
假设某个集群中存在两个只读列存节点,且数据库中已创建t1
、t2
、t33
、t3
和t4
表。分别在以下3个场景下查询INFORMATION_SCHEMA.IMCI_INDEXES
表中的列存索引的状态信息。
示例中使用的建表语句如下:
CREATE TABLE t1(
col1 INT COMMENT 'COLUMNAR=1',
col2 DATETIME COMMENT 'COLUMNAR=1',
col3 VARCHAR(200)
) ENGINE InnoDB;
CREATE TABLE t2(
col1 INT,
col2 DATETIME,
col3 VARCHAR(200)
) ENGINE InnoDB COMMENT 'COLUMNAR=1';
CREATE TABLE t33 (a INT, b INT) ENGINE = InnoDB COMMENT 'COLUMNAR=1';
CREATE TABLE t3(
col1 INT,
col2 DATETIME,
col3 VARCHAR(200)
) ENGINE InnoDB;
CREATE TABLE t4 COMMENT 'COLUMNAR=1' SELECT col1, col2 FROM t3;
场景一:在未开启列存索引功能的RW节点上查询
INFORMATION_SCHEMA.IMCI_INDEXES
表中的列存索引的状态信息。执行以下命令,查看集群中的索引信息。
SELECT * FROM INFORMATION_SCHEMA.imci_indexes;
查询结果如下:
+-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | Server_Id | TABLE_ID | SCHEMA_NAME | TABLE_NAME | NUM_COLS | NUM_PACKS | PACK_SIZE | ROW_ID | STATE | STATE_UPDATE_AT | CHECKPOINT_DATADIR | WRITE_POLICY | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | 28223015 | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_1/imci_chkp_1080_175 | Tradeoff | | 28223015 | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_1/imci_chkp_1081_178 | Tradeoff | | 28223015 | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_1/imci_chkp_1083_183 | Tradeoff | | 28223015 | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_1/imci_chkp_1086_190 | Tradeoff | | 28223014 | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_2/imci_chkp_1080_175 | Tradeoff | | 28223014 | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_2/imci_chkp_1081_178 | Tradeoff | | 28223014 | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_2/imci_chkp_1083_183 | Tradeoff | | 28223014 | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_2/imci_chkp_1086_190 | Tradeoff | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ 8 rows in set, 1 warning (0.021 sec)
场景二:在集群未开启列存索引功能的RO节点上查询
INFORMATION_SCHEMA.IMCI_INDEXES
表中的列存索引的状态信息。执行以下命令,查看集群中的索引信息。
SELECT * FROM INFORMATION_SCHEMA.imci_indexes;
查询结果如下:
+-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | Server_Id | TABLE_ID | SCHEMA_NAME | TABLE_NAME | NUM_COLS | NUM_PACKS | PACK_SIZE | ROW_ID | STATE | STATE_UPDATE_AT | CHECKPOINT_DATADIR | WRITE_POLICY | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | 28223015 | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_1/imci_chkp_1080_175 | Tradeoff | | 28223015 | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_1/imci_chkp_1081_178 | Tradeoff | | 28223015 | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_1/imci_chkp_1083_183 | Tradeoff | | 28223015 | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_1/imci_chkp_1086_190 | Tradeoff | | 28223014 | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_2/imci_chkp_1080_175 | Tradeoff | | 28223014 | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_2/imci_chkp_1081_178 | Tradeoff | | 28223014 | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_2/imci_chkp_1083_183 | Tradeoff | | 28223014 | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_2/imci_chkp_1086_190 | Tradeoff | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ 8 rows in set, 1 warning (0.006 sec)
场景三:在集群的一个只读列存节点上查询
INFORMATION_SCHEMA.IMCI_INDEXES
表中的列存索引的状态信息。执行以下命令,查看集群中的索引信息。
SELECT * FROM INFORMATION_SCHEMA.imci_indexes;
查询结果如下:
+-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | Server_Id | TABLE_ID | SCHEMA_NAME | TABLE_NAME | NUM_COLS | NUM_PACKS | PACK_SIZE | ROW_ID | STATE | STATE_UPDATE_AT | CHECKPOINT_DATADIR | WRITE_POLICY | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ | current | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_2/imci_chkp_1080_175 | Tradeoff | | current | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_2/imci_chkp_1081_178 | Tradeoff | | current | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_2/imci_chkp_1083_183 | Tradeoff | | current | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_2/imci_chkp_1086_190 | Tradeoff | | 28223015 | 1080 | test | t1 | 2 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:26 | ./imci_1/imci_chkp_1080_175 | Tradeoff | | 28223015 | 1081 | test | t2 | 4 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:36 | ./imci_1/imci_chkp_1081_178 | Tradeoff | | 28223015 | 1083 | test | t4 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:36:55 | ./imci_1/imci_chkp_1083_183 | Tradeoff | | 28223015 | 1086 | test | t33 | 3 | 0 | 16384 | 0 | COMMITTED | 2023-12-25 15:40:58 | ./imci_1/imci_chkp_1086_190 | Tradeoff | +-----------+----------+-------------+------------+----------+-----------+-----------+--------+-----------+---------------------+-----------------------------+--------------+ 8 rows in set (0.005 sec)