centos6.8版本服务器pgsql9.6+pg_hint_plan的使用
下载对应版本的 pg_hint_plan
# tar xzvf pg_hint_plan96-1.2.2.tar.gz
# cd pg_hint_plan96-1.2.2.tar.gz
# source /var/lib/pgsql/.bash_profile
# make
# make install
检查这几个文件
/usr/pgsql-9.6/lib/dblink.so
/usr/pgsql-9.6/share/extension/dblink–1.0–1.1.sql
/usr/pgsql-9.6/share/extension/dblink–1.1–1.2.sql
/usr/pgsql-9.6/share/extension/dblink–1.2.sql
/usr/pgsql-9.6/share/extension/dblink.control
/usr/pgsql-9.6/share/extension/dblink–unpackaged–1.0.sql
添加启动参数
$vi ./postgresql.conf
shared_preload_libraries = ‘pg_hint_plan’
pg_hint_plan.enable_hint = on
pg_hint_plan.enable_hint_table = on
pg_hint_plan.debug_print = on
pg_hint_plan.message_level = log
此处请注意,postgresql.auto.conf 会覆盖 postgresql.conf 相同的变量设置。
排查这个问题花费了我半天时间,可以通过查询 pg_settings 来获取参数的设置来源。
select ps.sourcefile,
ps.*
from pg_settings ps
where 1=1
and ps.name like ‘%shared_preload_libraries%’
;
重启PG后就可以使用pg_hint_plan了
$pg_ctl -D $PGDATA restart
============================
Basically pg_hint_plan does not requires CREATE EXTENSION.
Simplly loading it by LOAD command will activate it and of course you can load it globally by setting shared_preload_libraries
in postgresql.conf. Or you might be interested in ALTER USER SET/ALTER DATABASE SET for automatic loading for specific sessions.
postgres=# LOAD ‘pg_hint_plan’;
LOAD
postgres=#
Do CREATE EXTENSION and SET pg_hint_plan.enable_hint_tables TO on if you are planning to hint tables.
============================
select *
from pg_available_extension_versions
where 1=1
and name like ‘%hint_plan%’
;
select *
from pg_extension pc
where 1=1
;
create extension pg_hint_plan
;
会在当前数据库下创建一个 hint_plan 的 schema
SeqScan(t)
IndexScan(t)
/*+
SeqScan(t)
*/
explain
select *
from t_gather_pgsql_space_database t
where 1=1
and t.db_name =’xxxxx’
;
pg_hint_plan 的详细使用请参考tar.gz解压后的doc文件夹下的帮助文档
上一篇: python day 22 CSS拾遗之箭头,目录,图标
下一篇: ASP.NET Core详情
推荐阅读
-
MySQL(win7x64 5.7.16版本)下载、安装、配置与使用的详细图文教程
-
探讨:使用httpClient在客户端与服务器端传输对象参数的详解
-
Python实现的监测服务器硬盘使用率脚本分享
-
Python使用SocketServer模块编写基本服务器程序的教程
-
MySQL 5.7 版本的安装及简单使用(图文教程)
-
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
-
局域网共享管理软件、服务器共享文件夹设置访问权限软件的使用说明
-
使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '' for column 'createtime'的快速解决方法
-
ubuntu16.04使用Anaconda创建对应python版本的虚拟环境
-
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)