• centos 6.8 + postgresql 9.6 + pg_hint_plan


    下载对应版本的 pg_hint_plan
    https://zh.osdn.net/projects/pghintplan/releases/

    # 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文件夹下的帮助文档

    参考:
    https://osdn.net/projects/pghintplan/
    https://zh.osdn.net/projects/pghintplan/releases/

  • 相关阅读:
    vue 路由跳转传参
    vue better-scroll 下拉上拉,加载刷新
    H5点击拨打电话,发短信
    vue搭建项目
    How to determine the socket connection up time on Linux
    @ContextConfiguration注解
    MySQL修改主键属性
    软件测试工程师面试(一)
    Python实现不同格式打印九九乘法表
    MySQL 5.1安装和配置过程中遇到的问题
  • 原文地址:https://www.cnblogs.com/ctypyb2002/p/9793120.html
Copyright © 2020-2023  润新知