本文介绍如何开启向量化引擎,以及开启功能后的使用方式。
使用限制
仅PolarDB PostgreSQL版14.10.20.0及以上版本支持向量化引擎。
原表必须有主键,且必须将主键列加入到加速索引中。
目前只针对静态数据,创建加速索引后,新增的动态数据无法通过加速索引查询。
目前支持的一致性级别为最终一致性。
一张表只能创建一个加速索引,加速索引中可以包含多个列。
不支持自定义数据类型,即通过
CREATE TYPE
语句创建的数据类型无法使用加速索引。不支持存储过程的加速。
当查询语句使用的内存超过
polar_csi.memory_limit
指定的内存容量时会失败。
开启方式
PolarDB PostgreSQL版向量化引擎是一个内部的功能模块,与PolarDB PostgreSQL版已有的所有功能完全融合,可以在现有的PolarDB PostgreSQL版集群中免费开启/关闭该功能,无需为该功能单独付费或额外购买新集群。
PolarDB PostgreSQL版向量化引擎作为插件(polar_csi)部署在数据库集群中,在使用之前需要在指定的数据库中创建插件。
具体步骤如下:
通过
psql
命令连接到现有集群的数据库,使用时请将{}中的内容替换为集群的连接信息,查看连接信息请参考查看或申请连接地址。psql -h {host} -p {port} -U {user_name} {dbname}
登录到数据库后,创建polar_csi插件。
说明需要注意的是,polar_csi插件的作用域是database级别,如果需要在一个集群的多个database中使用向量化引擎能力,需要为每个database分别创建polar_csi插件。
CREATE EXTENSION polar_csi;
开启向量化引擎功能(创建polar_csi插件后默认为关闭状态)。
SET polar_csi.enable_query = ON;
语法说明
创建/删除
polar_csi
插件:------创建polar_csi插件 CREATE EXTENSION polar_csi; ------删除polar_csi插件 DROP EXTENSION polar_csi;
开启/关闭向量化引擎功能,生效范围为会话或数据库。
SET polar_csi.enable_query = [on|off]; SET polar_csi.enable_query to [on|off];
创建加速索引,与PostgreSQL现有的
CREATE INDEX
语法一致,下列语句中primary_key
是原表的主键列。CREATE INDEX xxx ON xxx USING CSI(primary_key,c1,c2,c3);
查看加速索引创建速度。
SELECT * FROM pg_stat_progress_create_index;
查看某张表是否存在加速索引,可以使用
\d
命令。下列示例中,source_table_csi即为表source_table的加速索引。删除加速索引。
DROP INDEX xxx;
重建加速索引。
REINDEX INDEX xxx;
查看Query是否使用加速索引:explain结果出现CSI Executor关键词时即表示使用加速索引。
EXPLAIN SELECT COUNT(*) FROM source_table; QUERY PLAN -------------- CSI Executor (1 row)
使用Hint方式开启/关闭,生效范围为SQL语句。
说明需要依赖pg_hint_plan插件,创建对应插件请使用
CREATE EXTENSION
。/*+ SET (polar_csi.enable_query on/off) */ SELECT ....
配置参数
参数名 | 取值范围 | 默认值 | 说明 |
polar_csi.enable_query | on|off | off | 是否启用向量化引擎。 |
polar_csi.exec_parallel | 1~512 | 2 | 向量化引擎执行单条查询语句的并行度。 请根据集群规格来调整该参数的值,建议 |
polar_csi.scan_parallel | 1~16 | 2 | 向量化引擎执行单条查询语句时, 请根据集群规格来调整该参数的值,建议 |
polar_csi.memory_limit | 1~1048576 | 1024 | 向量化引擎可以使用的内存,单位:MB。 请根据集群规格来调整该参数的值,建议不超过集群内存的25%。 |
polar_csi.cost_threshold | 1~1000000000 | 1000 | 当查询代价小于该阈值时,查询语句不会使用向量化引擎来加速。 建议调大该参数的值,否则可能会影响TP类查询的性能。 |
数据类型
完全支持的数据类型如下:
类别
数据类型
bool 型
BOOLEAN
字符与二进制
CHAR
、VARCHAR
、BPCHAR
、TEXT
、BYTEA
、ARRAY
、NAME
、INTERVAL
时间型
DATE
、TIME
、TIMESTAMP
、TIMESTAMP WITH ZONE
数值型
SHORT
、SMALLINT
、INTEGER
、BIGINT
、DECIMAL
(需要指定精度)、NUMERIC
、SERIAL
、UUID
、ENUM
、FLOAT4
、FLOAT8
有限支持的数据类型如下:
JSONB
、JSON
。