本文介紹如何開啟向量化引擎,以及開啟功能后的使用方式。
使用限制
僅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
。