跨機並行查詢功能還可以用於加速構建B-tree索引,同時支援加速建立B-Tree索引的GLOBAL索引。本文介紹工作原理以及如何使用該功能加速索引構建。
原理介紹
PolarDB PostgreSQL版(相容Oracle)在執行索引構建時,會首先掃描待構建索引的基表構造出索引項目,然後再進一步的根據索引項目完成整棵索引樹的構建過程。
當使用跨機並行查詢功能加速Btree索引構建時,系統會自動構建出一個QC進程完成對基表項的並行掃描,並由索引構建進程接收QC進程掃描結果完成後續的索引建立邏輯。
注意事項
- 當前僅支援簡單情境,對普通列類型的索引構建過程,暫不支援CONCURRENTLY,INCLUDE等索引構建文法。
- 暫不支援運算式等索引列類型。
參數說明
如果需要使用跨機並行查詢功能加速建立索引,請使用如下參數:
參數 | 說明 |
polar_px_enable_btbuild | 是否開啟使用跨機並行查詢加速建立索引。取值如下:
|
polar_px_dop_per_node | 指定通過跨機並行查詢加速構建索引的並行度。預設為1,推薦值8或者16。 該參數同時也指定了跨機並行查詢的並行度。詳細資料,請參見使用跨機並行查詢進行分析型查詢。 該參數可以指定資料庫角色進行開啟。 |
polar_px_enable_replay_wait | 當使用跨機並行查詢加速索引構建時,當前會話內無需再手動開啟polar_px_enable_replay_wait,該參數將自動生效,以便保證最新動向的資料表項可以被建立到索引中,保證索引表的完整性。索引建立完成後,該參數將會被重設為資料庫預設設定。 |
polar_bt_write_page_buffer_size | 指定索引構建過程中的寫IO策略。該參數預設值為0,不開啟,單位為塊,最大值可設定為8192。推薦設定為4096。
|
樣本
樣本背景:
執行如下命令,建立test表。
CREATE TABLE test(id int,id2 int);
查詢表結構:
\d test
Table "public.test"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
id2 | integer | | |
執行如下步驟,對test表通過跨機並行查詢構建索引。
- 開啟使用跨機並行查詢加速建立索引功能。命令如下:
SET polar_px_enable_btbuild=on;
查看設定狀態:
SHOW polar_px_enable_btbuild;
返回結果如下:
polar_px_enable_btbuild ------------------------- on (1 row)
- 使用如下文法建立索引。
CREATE INDEX t ON test(id) WITH(px_build=on);
查詢表結構:
\d test Table "public.test" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | | id2 | integer | | | Indexes: "t" btree (id) WITH (px_build=finish)
說明 若要使用跨機並行查詢加速索引建立,建立索引的文法需要添加px_build選項。
構建完成後,該表的索引類型會帶有(px_build=finish)欄位,說明該索引項目是通過跨機並行查詢的方式構建的。
如果開啟polar_px_enable_btbuild,但建立索引的文法上未添加px_build選項,則會使用PolarDB PostgreSQL版(相容Oracle)原生的索引建立方式構建索引。樣本如下:
CREATE INDEX t ON test(id);
查詢表結構:
\d test
Table "public.test"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
Indexes:
"t" btree (id)
效能資料
使用跨機並行查詢加速索引構建功能,對於大表建立索引時間,相較於原生PolarDB PostgreSQL版(相容Oracle)的索引建立,可縮短近5倍。
跨機並行查詢功能支援加速建立B-Tree索引的GLOBAL索引,如下是GLOBAL索引使用跨機並行查詢功能前後的效能對比圖(130GB資料量)。