pg三种插件验证

sr_plan

  1. 创建extension, 他会创建保留执行计划的表
    在这里插入图片描述
    pg三种插件验证_第1张图片
  2. 创建表并插入数据
    pg三种插件验证_第2张图片
  3. 开启sr_plan.write_mode, 允许sr_plan收集SQL和执行计划
    在这里插入图片描述
  4. 查看QUERY 1的执行计划
    pg三种插件验证_第3张图片
    pg三种插件验证_第4张图片
    PostgreSQL支持merge join、GroupAggregate(通过INDEX SCAN),所以这个CASE,非常快,并不需要b对所有数据进行聚合。
  5. 查看QUERY 2的执行计划
    pg三种插件验证_第5张图片
    pg三种插件验证_第6张图片
    在这里插入图片描述
  6. 执行以下QUERY后,QUERY的执行计划被保存到sr_plans中
    在这里插入图片描述
    pg三种插件验证_第7张图片
  7. 禁止sr_plan收集SQL与执行计划
    在这里插入图片描述
  8. 查看保存的执行计划
    pg三种插件验证_第8张图片
    explain_jsonb_plan 不适用
  9. 替换(篡改)执行计划
    在这里插入图片描述
  10. 允许QUERY使用sr_plan保存的执行计划
    验证QUERY是否已使用sr_plan保存的执行计划

pg三种插件验证_第9张图片
在这里插入图片描述

  1. 只要parser后的QUERY不变,执行计划就不会变化pg三种插件验证_第10张图片
    支持左连接,右连接等常用查询。

pg_query_rewrite()

create extension pg_query_rewrite;
pg_query_rewrite.max_rulespg_query_rewrite.max_rules

select pgqr_add_rule(, );

select pgqr_remove_rule();

select pgqr_truncate();
查看所有规则:select pgqr_rules();
创建一个新的规则,将SQL语句转换为SQL语句:
pg三种插件验证_第11张图片
删除:
pg三种插件验证_第12张图片

你可能感兴趣的:(postgresql)