索引優化建議
更新時間 2025-02-05 09:36:28
最近更新時間: 2025-02-05 09:36:28
分享文章
索引優化模塊通過分析查詢語句為數據庫管理員和開發人員提供可操作的索引構建建議,以優化查詢執行,提升查詢效率。本頁為您介紹索引優化模塊、獲取和重置索引優化建議的相關內容。
初始化模塊
索引優化模塊基于pg_qualstats和hypopg插件實現,而pg_qualstats依賴能夠獲取queryId的插件通常使用pg_stat_statements插件。所以索引優化建議模塊的初始化需要創建這些插件,并設置好插件參數。
在配置文件中通過shared_preload_libraries設置上述插件的預加載
在實例中執行如下語句對索引優化建議模塊進行初始化設置
CREATE EXTENSION pg_stat_statements; CREATE EXTENSION pg_qualstats; CREATE EXTENSION hypopg; ALTER SYSTEM SET pg_qualstats.sample_rate TO 1; select pg_reload_conf();
獲取索引優化建議
索引優化建議模塊提供index_advise() 函數來獲取全量的索引優化建議,該函數有一個輸入參數用于設定索引建議記錄中查詢計劃的輸出格式,該參數值可以設置為‘jsonb’(以JSON格式輸出查詢計劃)和‘text’(以文本形式輸出查詢計劃),默認值為‘jsonb’
teledb=# select index_advise(‘text’);索引優化建議模塊提供index_advisory_pretty 視圖來獲取有實際收益的索引優化建議,使用如下命令查詢該視圖
teledb=# select * from index_advisory_pretty;該視圖字段和說明如下表所示:
| 字段名稱 | 說明 |
|---|---|
| dbid | SQL 操作的數據庫 |
| queryid | SQL 語句 ID |
| query | SQL 語句內容 |
| source_node | 索引建議生效的節點 |
| recmnded_index | 針對該SQL 的索引建議 |
| cost_without_index | 不采用索引建議時的執行代價 |
| cost_with_index | 采用索引建議時的執行代價 |
| percent_improved | 索引建議提高的執行性能(百分比%) |
| current_plan | 原SQL 語句的查詢計劃 |
| hypo_plan | 使用索引建議后SQL 語句的查詢計劃 |
| iscreated | 該索引是否已經被創建 |
重置索引優化建議
索引優化建議模塊提供index_advisory_reset() 函數來重置模塊,清除所有節點中索引優化建議相關的數據信息
teledb=# select index_advisory_reset();