PostgreSQL源代码中插件的使用

如果编译数据库时使用了gmake world和gmake install-world, 所有的插件都会被安装, 那么就不需要再次安装了.

插件目录

contrib

进入要安装的插件目录, 例如

cd contrib/pg_freespacemap

把pg_config命令加入到默认路径中

export PATH=/opt/pgsql/bin:$PATH

gmake clean

gmake

gmake install -- 这一步会将生成的动态库文件拷贝到pgsql的lib目录, 同时拷贝生成的扩展文件到

$PGHOME/share/extension中.

安装完后, 到数据库中以超级用户执行create extension

create extension pg_freespacemap;

根据第三方插件提供的安装说明进行安装

通用的安装方法

1. 把第三方插件的源码目录拷贝到contrib目录中

2. 把pg_config加入到PATH中

3. gmake clean; gmake; gmake install

4. create extension xxx; 对于一些老版本的插件, 可能没有改成扩展插件的安装模式. 那么需要到对应的库中直接执行SQL.

第三方插件的安装和使用

可到git.postgresql.org下载第三方插件源码

PostgreSQL 特性的测试可以参照PostgreSQL源码中提供的测试脚本进行测试

src/test/regress/sql

auto_explain插件的使用

auto_explain的目的是给数据库中执行的SQL语句一个执行时间阈值, 超过阈值的话, 记录下当时这个SQL的执行计划到日志中, 便于未来查看这个SQL执行计划有没有问题.

export PAHT=/home/pg93/pgsql/bin:$PATH

which pg_config

cd /opt/soft_bak/postgresql-9.3.4/contrib/auto_explain/

gmake clean

gmake

gmake install

1. 修改配置文件postgresql.conf:

shared_preload_libraries = ‘auto_explain‘

新增如下配置:

auto_explain.log_min_duration = 0 # 为了方便查看,这里把时间设置为0,所有SQL都会被auto_explain捕获输出.实际使用的时候适当调大。如 100ms

auto_explain.log_analyze = true

# 以下可选

auto_explain.log_verbose = true

auto_explain.log_buffers = true

auto_explain.log_nested_statements = true

重新启动PostgreSQL数据库

pg_stat_statements 安装

在postgreSQL数据库安装完之后

编辑postgresql.conf

shared_preload_libraries=‘pg_stat_statements,auto_explain’;

pg_stat_statements.max = 1000

pg_stat_statements.tarck =all

auto_explain.log_min_duration = ‘10s’

auto_explain.log_analyze = false

auto_explain.log_verbose = false

auto_explain.log_nested_statements = true

(for auto_explain;cd conttrib make ;make install)

cd /contrib/pg_stat_statemetns

make

make install

重新启动数据库

Pg_ctl –D ../data start

链接数据库

./psql

create extension pg_stat_statements;

select pg_stat_statements_reset();

然后是SQL操作

\d pg_stat_statements

select query,total_time,calls,from pg_stat_statements order by 3 desc limit 2;

即出现SQL语句的执行时间和执行次数;

(auto_explain的结果可以通过日志查看)

搜索

复制

时间: 2024-10-03 21:43:23

PostgreSQL源代码中插件的使用的相关文章

vs2015 活动解决方案或项目由选择的源代码管理插件以外的插件管理

1.vs2015切换源代码管理插件,svn无法切换到git,点击是将关闭项目 解决方案: 找到项目中.sln 文件,使用编辑器打开,将Svn-Managed = true 设置为false

【转】如何单独编译Android源代码中的模块

原文网址:http://blog.csdn.net//article/details/6566662/ 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包syst

具体解释Redis源代码中的部分高速排序算法(pqsort.c)

看标题.你可能会疑惑:咦?你这家伙.怎么不解说完整的快排,仅仅讲一部分快排---.- 哎,冤枉. "部分快排"是算法的名字.实际上本文相当具体呢.本文差点儿与普通快排无异.看懂了本文,你对普通的快排也会有更深的认识了. 高速排序算法(qsort)的原理我们大都应该了解.本文介绍的是部分高速排序算法. 事实上其算法本质是一样的,仅仅只是限定了排序的左右区间.也就是仅仅对一个数字序列的一部分进行排序.故称为"部分高速排序算法".简称:pqsort Redis项目中的pq

如何单独编译Android源代码中的模块

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6566662 第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为

postgresql开发中可能有用的知识

一.PostgreSQL中可以直接对时间进行加减运算: 查询系统当前时间: select now();或者select current_timestamp; SELECT now()::timestamp + '1 year';  --当前时间加1年SELECT now()::timestamp + '1 month';  --当前时间加一个月SELECT now()::timestamp + '1 day';  --当前时间加一天SELECT now()::timestamp + '1 hou

【HTML】利用JSP注释隐藏在源代码中的HTML注释,同理推广到ASP与PHP

大家都知道在HTML利用使用注释是<!-- -->,长期以来大家都这样用,但是这段注释可以在源代码中被查看. 虽然HTML页面已经提前约定自己写的HTML代码被公开,前端终归是前端,前端代码不值钱之类的,但是,这些关于HTML注释直接放在源代码能够被查看中始终有种不规范的感觉,而且这段注释分明就可以利用一些技巧隐藏起来. 如果是JSP页面大家不妨使用, <%-- --%>来注释,比如以下页面: <%@ page language="java" conten

通过ABAP的标准功能,寻找源代码中的字符串

程序名称: 1 RPR_ABAP_SOURCE_SCAN 或者 2 RS_ABAP_SOURCE_SCAN 或者 3 *ABAP_SOURCE_SCAN 查找 作用:通过这个标准程序,可以在系统的源代码中进行字符串的查找!

Test: 为WLW添加源代码着色插件WindowsLiveWriter.CNBlogs.CodeHighlighter

Test1:测试C语言. // hello.c #include <stdio.h> #define PI 3.14 int main (int argc, char* argv[]){ printf ("Hello, world!\n"); return 0; } Test2: 测试Java. // Hello.java public class Hello{ protected static int n=3.14; protected String str="

PostgreSQL数据库中获取表主键名称

PostgreSQL数据库中获取表主键名称 一.如下表示,要获取teacher表的主键信息: select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from pg_constraint inner join pg_class on pg_constraint.conrelid = pg_class.oid inner join pg_attribute