postgresql——执行计划查看方式与计划分析

news/2024/7/9 19:57:33 标签: postgresql

执行计划查看命令

    explain[(option[,…])]
    explain [analyze][verbose]statement
    可选的option选项有:

        analyze[boolean]:得到statement的真实运行时间。默认是false
        verbose[boolean]:得到statement语句的执行计划和执行计划中的每个节点的详细信息。默认为false
        costs[boolean]:得到计划中每个接地哪的cost,rows,width的估算值,默认为true
        buffers[boolean]:analyze出现时可选。缓存的使用情况
        共享缓存(shared blocks)的hit,read,dirtied,written数值
        本地缓存(local blocks)的hit,read,dirtied,written数值
        临时快(temp blocks)的read,written数值
        timing[boolean]:analyze出现时可选。显示每个节点的启动时间和总时间花费。默认true
        format{text|xml|json|yaml}:指定执行计划的输出格式
        text:默认值。以行为单位,显示每个结点的计划信息,以缩进格式表示子节点的计划信息。buffers参数时的文本格式,只输出非零值
        xml:xml格式
        json:json格式
        yaml:以yaml格式显示执行计划

常用组合

    一般查询
    explain analyze select … ;
    查询缓存及详细信息
    explain (analyze,verbose,buffers) select … ;
    针对更新插入删除的执行计划查询
    begin;
    explain analyze insert/update/delete … ;
    rollback;

查询计划解读
关键字

    cost:重要的指标。cost=0.00…16.11有两个部分,启动时间=0.00 和总时间=16.11。单位是毫秒。这个指标也只是预测值。启动时间也有解释为找到符合条件的第一行所花的时间。
    rows:返回的行数,如果执行vacuum和analyze那么返回的结果更加接近实际值
    width:查询结果所有字段的总宽度,并非关键指标。
    actual time:实际花费的时间。
    loops:循环的次数
    buffers:缓冲命中数
    output: 输出的字段名
    planning time: 生成执行计划时间
    execution time:执行执行计划时间

阅读顺序

    嵌套层次最深的,最先执行
    同样嵌套深度的,从上到下,先予执行
    每一步的cost包括上一步

节点

    Seq Scan: 表扫描
    Index Scan:索引扫描(读取索引块,然后读取数据文件)
    Index Only Scan:索引只读扫描(只读取索引文件,根据映射文件获取数据)
    Nested [(type)] Loop:嵌套循环连接。type可能是Inner,left,right,full,semi,anti。inner的可以显示省略
    Merge[(type)] Join 归并连接。type同上
    Hash[(type)] Join:哈希连接。type同上
————————————————
版权声明:本文为CSDN博主「Walter Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Soul_Programmer_Swh/article/details/89424092


http://www.niftyadmin.cn/n/1098706.html

相关文章

图像解析力算法—SFR(Spatial Frequency Response)源码分析(二)

在上一篇图像解析力算法—SFR(Spatial Frequency Response)源码分析(一)中介绍了SFR的几个重要函数,接下来我们看一下主流程和其他函数。 4、sfrProc作用:计算SFR数值的主流程函数 short sfrProc (double **freq, doub…

.Net中WebClient的使用

CodeWebClient aWb new WebClient()//定义一个键值列System.Collections.Specialized.NameValueCollection Data new System.Collections.Specialized.NameValueCollection();Data["uid"] HjDict.Bulo_ID.ToString();Data["w"] word;Data["c"…

质数相关

快速判断素数 bool prime(int n) { if(n3 || n2) return true; if(n%20 || n%30 || n1) return false; int k sqrt(n)1; for(int i 5;i < k;i 6) if(n%i0 || n%(i2)0) return false; return true; } 编译出来100w内的质数 #include <stdio.h> #…

ORA-01555 snapshot too old解决办法

首先&#xff0c;先了解下此错误产生的原因。 其根本原因是&#xff0c;undo表空间里的commit过的数据被覆盖。这种事件最容易发生在游标cursor中。当用户A运行一个长时间的cursor&#xff0c;而此时用户B已对cursor查询所使用的原始数据做了修改。长时间运行中的cursor&#x…

My Silverlight系列(8)—— 关于Silverlight 2 RC0中的ComboBox

上个月的25号&#xff0c;微软发布了Silverlight 2 RC0&#xff0c;用于Silverlight2的正式RTW版发布之前&#xff0c;为程序员提供的一个过渡版本。让人高兴的是在这个版本中&#xff0c;微软的Silverlight小组履诺为我们做出了三个通用控件&#xff0c;分别是ProgressBar、Co…

SFR算法详解(一)——基础理论

免责声明&#xff1a;仅供研究讨论&#xff0c;未经确认&#xff0c;相关内容严禁商用&#xff0c;若有错误&#xff0c;欢迎指正。 SFR是空间频率响应(Spatial frequency response)的英文缩写&#xff0c;是指一个系统相对于输入的空间频率所输出的振幅响应&#xff0c;对于摄…

演义群侠传(一)【游戏性能优化】

应用的优化技术从易到难排列 1.不要使用滤镜【更改方法&#xff1f;】 2.尽可能使用倒序for循环&#xff0c;避免使用do循环和while循环【什么是倒叙】 3.明确的停止使用Timer&#xff0c;以便垃圾回收【√】 4.使用弱引用时间侦听器&#xff0c;当不用的时候移除【更改】 5.尽…

C的几个小程序和概念(常见操作)(下)

C的几个小程序和概念(常见操作)&#xff08;下&#xff09; 1、排列问题 输出n中取m无重复的元素排列情况。 用递归实现 #include "iostream" using namespace std; char f[27];//最多用个字母来表示排列情况 char p[27];//来标识当前字母的获取情况。都从开始…