zoukankan      html  css  js  c++  java
  • PG 通过 auto_explain 模块查看函数中的 SQL 的执行计划,从而进行性能优化(瓶颈定位)

    重启数据库方式

    • 修改配置文件
    	vim /mnt/syncdata/pgsql/data/postgresql.conf
    	shared_preload_libraries = 'auto_explain'  
    
    	或者如果 shared_preload_libraries 已经有值的话
    	shared_preload_libraries = 'pg_stat_statements , auto_explain'
    
    	然后添加以下 5 条配置(后面四个配置可选) log_min_duration单位为毫秒
    	auto_explain.log_min_duration = 100
    	auto_explain.log_analyze = true  
    	auto_explain.log_verbose = true  
    	auto_explain.log_buffers = true  
    	auto_explain.log_nested_statements = true  
    

    • 重启数据库服务器
    pg_ctl restart -m fast -D $PGDATA
    
    • 业务操作或者执行存储过程操作时, 此时会在 pg_log 日志中打印相关 SQL (执行时间超过之前在配置文件中配置的 100ms ) 执行计划

    不重启数据库方式

    • 以postgres用户登录数据库
    • 加载模块
    postgres=> load 'auto_explain';  
    
    • 设置 log_min_duration 单位为ms
    postges=> set auto_explain.log_min_duration=1000;
    
    • 业务操作或者执行存储过程操作时, 此时会在 pg_log 日志中打印相关 SQL 执行计划

    如果想在屏幕上打印相关执行计划

    做如下设置

    	set client_min_messages='log';
    	set auto_explain.log_min_duration = 1000;
    	set auto_explain.log_analyze = true;
    	set auto_explain.log_verbose = true;
    	set auto_explain.log_buffers = true;
    	set auto_explain.log_nested_statements = true;
    

    参考:https://github.com/digoal/blog/blob/master/201611/20161121_02.md

  • 相关阅读:
    软件开发项目文档模版
    Java Swing 非常漂亮的外观Nimbus使用方法
    周00王总监 宁波浦一的同仁们 有看见的进来
    冰川世界
    君住长江头,我住长江尾,日日思君不见君,共饮长江水
    可乐男孩被保送上大学
    变形金刚2
    爱无罪
    英语习惯口语简写
    看完了团长,我没有心理在去看《南京!南京!》
  • 原文地址:https://www.cnblogs.com/yldf/p/11899966.html
Copyright © 2011-2022 走看看