pg_store_plans_ossc-db/pg_store_plans-程序员宅基地

技术标签: extension  pg_store_plans  ossc-db  postgresql  # postgresql extension  

os: ubuntu 16.04
db: postgresql 10.6

版本

# lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.5 LTS
Release:	16.04
Codename:	xenial
#
# su - postgres
$ psql -c "select version();"
                                                     version                                                     
-----------------------------------------------------------------------------------------------------------------
 PostgreSQL 10.6 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609, 64-bit
(1 row)

下载安装

# su - postgres
$ git clone https://github.com/ossc-db/pg_store_plans.git
$ cd pg_store_plans/
$ git branch -a

此时需要将 pg_store_plans 目录放置到编译通过的PG工程的"…/contrib/"目录下

$ cp -R ~/pg_store_plans ~/postgresql-10.6/contrib/
$ cd ~/postgresql-10.6/contrib/pg_store_plans

$ make
$ make install
/bin/mkdir -p '/usr/pgsql-10/lib'
/bin/mkdir -p '/usr/pgsql-10/share/extension'
/bin/mkdir -p '/usr/pgsql-10/share/extension'
/bin/mkdir -p '/usr/pgsql-10/lib'
/usr/bin/install -c -m 755  pg_store_plans.so '/usr/pgsql-10/lib/pg_store_plans.so'
/usr/bin/install -c -m 644 ./pg_store_plans.control '/usr/pgsql-10/share/extension/'
/usr/bin/install -c -m 644 ./pg_store_plans--1.3.sql ./pg_store_plans--1.2--1.3.sql  '/usr/pgsql-10/share/extension/'
/usr/bin/install -c -m 755  pg_store_plans.so '/usr/pgsql-10/lib/'

使用

修改参数

$ vi postgresql.conf
shared_preload_libraries = 'pg_hint_plan, pg_store_plans, pg_stat_statements'
pg_store_plans.max = 10000
pg_store_plans.track = all

#pg_store_plans.max (integer)
#pg_store_plans.track (enum)
#pg_store_plans.plan_format (enum)
#pg_store_plans.min_duration (integer)
#pg_store_plans.log_analyze (boolean)
#pg_store_plans.log_buffers (boolean)
#pg_store_plans.log_timing (boolean)
#pg_store_plans.log_triggers (boolean)
#pg_store_plans.verbose (boolean)
#pg_store_plans.save (boolean)

这些参数的说明可以看 ./pg_store_plans/doc/index.html

postgres=# select * from pg_available_extensions where name like 'pg_store_plans';
      name      | default_version | installed_version |                       comment                        
----------------+-----------------+-------------------+------------------------------------------------------
 pg_store_plans | 1.3             |                   | track plan statistics of all SQL statements executed
(1 row)

postgres=# create extension pg_store_plans;
postgres=# create extension pg_stat_statements;

postgres=# \dx
                                     List of installed extensions
        Name        | Version |   Schema   |                        Description                        
--------------------+---------+------------+-----------------------------------------------------------
 pg_hint_plan       | 1.3.3   | hint_plan  | 
 pg_stat_statements | 1.6     | public     | track execution statistics of all SQL statements executed
 pg_store_plans     | 1.3     | public     | track plan statistics of all SQL statements executed
 plpgsql            | 1.0     | pg_catalog | PL/pgSQL procedural language
(4 rows)

postgres=# SELECT s.query, p.plan,p.calls as "plan calls", s.calls as "stmt calls",
             p.total_time / p.calls as "time/call", p.first_call, p.last_call
        FROM pg_stat_statements s
             JOIN pg_store_plans p 
			      ON ( p.queryid = pg_store_plans_hash_query(s.query) )
        ORDER BY query ASC, "time/call" DESC;
		

参考:
https://github.com/ossc-db/pg_store_plans

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ctypyb2002/article/details/88991144

智能推荐

TRACCAR支持的设备列表-程序员宅基地

文章浏览阅读1.7k次。GT06_traccar支持的设备

基于连接的每IP限速实现_netfilter限速-程序员宅基地

文章浏览阅读9.7k次,点赞2次,收藏2次。在《修改netfilter的limit模块实现基于单个ip的流量监控》中,介绍了一种方式实现针对一个网段每个IP地址的流量控制,如果细化到流,那个就叫做针对每个流的流量控制,我们知道,一个IP地址可以和很多流相关联,针对流的流控限制的不是主机,而是主机上的一个连接,它的约束要比针对IP地址的流控更加小。 然而如何来实现这个呢?实际上在Linux中,几乎所有的流控都可以用TC工具配置出_netfilter限速

Java 获取linux根目录下的文件夹_java获取指定文件夹下的所有文件名-程序员宅基地

文章浏览阅读1.8k次。原文链接:java获取指定文件夹下的所有文件名_tomorrowzm的专栏-程序员宅基地_java查询指定文件夹下的所有文件输出文件名 site:blog.csdn.net​blog.csdn.netpackage 这里我们主要使用的是listFiles函数来得到file文件夹下的所有文件,包括文件夹。然后通过File类的isFile和isDirectory来区分,如果是文件,就输出对应的信息,如..._java读取linux服务器下指定目录下的文件名称

Update批量更新(高性能、动态化)_批量update-程序员宅基地

文章浏览阅读7.6k次,点赞7次,收藏20次。文章目录前言一、环境开发环境测试环境二、灵光乍现MyBatis-Plus源码2.初见真正的批量更新语法三、开工基础类搭建SysUser(表sys_user实体类)Stash(拼接SQL服务,内部类)TableCacheDTO(数据表信息存储)TableCache(表信息缓存)MySQL拼接常量类缓存数据库表信息1. 继承AbstractMethod2. 自定义sql注入器3. 自定义注入器生效事务工具类制作SQL工具类SQL执行类四、测试100条测试数据1千条测试数据1万条测试数据10万条测试数据五、弊端总_批量update

PID优化系列之目标值平滑(斜坡函数梯形图+完整SCL代码)_控制斜坡pid-程序员宅基地

文章浏览阅读2.2k次,点赞4次,收藏6次。作为PID系列专题,这些文章,我都会给出PLC梯形图的源代码和SCL代码方便大家对比学习,文章中的错误和不严谨之处,也请大家指正。1、专题1:设定值响应问题 2、PLC的梯形图代码,这部分我们可以做成功能块,启用PID运算时,我们可以对设定值进行线性化平滑处理,也可以不处理。......_控制斜坡pid

编程实现36进制和10进制之间的相互转换_36进制转换10进制-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏4次。36进制转换成10进制的方法,以R9和10Y为例R9就是 27 * 36^1 + 9*36^0 = 98110Y 就是 1* 36^2 + 0 * 36^1 + 34*36^0 =133010进制转换成36进制的方法,以1079和52360为例(1079/36^0) % 36 = 35(1079/36^1) % 36 = 29(1079/36^2) 所以_36进制转换10进制

随便推点

无法安全地连接到此页面,这可能是因为该站点使用过期的或不安全的 TLS 安全设置._无法安全地连接到此页面 这可能是因为该站点使用过期的或不安全的 tls 安全设置。-程序员宅基地

文章浏览阅读2w次,点赞3次,收藏15次。问题描述:网页中的链接打不开,页面显示如标题所述,原因可能是因为我之前打开了很多内容,后来电脑没电直接关机了,导致出错。解决方法:1、按住win+R打开运行,输入inetcpl.cpl,点击确定,打开internet属性。2、打开在internet属性后,点击【安全】选卡,再点击【安全】页面中的“Internet”,选择“自定义级别”。如下图所示:3、在中间偏下位置找到“显示混合模式”,将其改为“启用”。如下图所示:4、再在Internet属性窗口中点击【高级】选项卡,找到“使用TLS 1_无法安全地连接到此页面 这可能是因为该站点使用过期的或不安全的 tls 安全设置。

B/S與C/S_当今世界开发模式技术架构的两大主流技术?-程序员宅基地

文章浏览阅读1.3k次。一、什么是C/S和B/S 要想对“C/S”和“B/S”技术发展变化有所了解,首先必须搞清楚三个问题。 第一、什么是C/S结构。 C/S (Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是Client/Server形式的两_当今世界开发模式技术架构的两大主流技术?

MDK配置jlink仿真器步骤_mdk5如何定义swd-程序员宅基地

文章浏览阅读5.5k次。MDK配置jlink仿真器步骤:1.如下图2.设置为SW模式3.选择处理器的flash大小4.设置utilities5.查看是否是SW模式6.查看Flash大小重新编译程序download就好了..._mdk5如何定义swd

渗透测试17---Metasploit (MSF) 部署与功能_msf war包部署 渗透-程序员宅基地

文章浏览阅读7.5k次。MetasploitMetasploit Framework简称MSF(ruby语言开发的)实验环境准备Metasploit的使用第一次使用要进行数据库的初始化msfdb init用的时候就:msfconsole也可以:msfdb run (就等于msfdb init 和msfconsole)Metasploit指令search ms17_010 会列出许多模..._msf war包部署 渗透

python实战:将cookies添加到requests.session中实现淘宝的模拟登录_浏览器登录淘宝后使用其cookie再用requests登录-程序员宅基地

文章浏览阅读1.4w次,点赞11次,收藏89次。将cookies添加到requests.session中实现淘宝的模拟登录声明:本文仅供学习用,旨在分享我们知道现在爬取淘宝商品是必须要登录的,在没有登录的情况下搜索商品也会自动重定向到登录页面。之前学着用selenium,pyppeteer等自动化框架模拟登录淘宝,但是无论怎么滑动滑块验证都失败。然而就像星爷《新喜剧之王》中所说得:只要不投降就是成功,同时为了安慰自己受伤的小心灵,决定用co..._浏览器登录淘宝后使用其cookie再用requests登录

[NLP]使用LDA模型计算文档相似度_lda关键词提取怎么和文本进行相似度-程序员宅基地

文章浏览阅读1.6w次,点赞2次,收藏68次。定义wiki关于lda的定义:隐含狄利克雷分布简称LDA(Latent Dirichlet allocation),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。LDA首先由Blei, David M.、_lda关键词提取怎么和文本进行相似度

推荐文章

热门文章

相关标签