初始化模块
索引优化模块基于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();