首页 > 其他分享 >PG EXPLAIN (query planner)

PG EXPLAIN (query planner)

时间:2023-09-09 21:11:15浏览次数:53  
标签:结点 planner EXPLAIN boolean query ANALYZE

PG EXPLAIN (query planner)

Synopsis

EXPLAIN [ ANALYZE ] [ VERBOSE ] statement
where option can be one of:
    ANALYZE [ boolean ]
    VERBOSE [ boolean ]
    COSTS [ boolean ]
    SETTINGS [ boolean ]
    BUFFERS [ boolean ]
    WAL [ boolean ]
    TIMING [ boolean ]
    SUMMARY [ boolean ]
    FORMAT { TEXT | XML | JSON | YAML }

Important

- 如果想看到实际的执行计划但又不想让change生效
BEGIN;
EXPLAIN ANALYZE ...;
ROLLBACK;

Notes

为了让PostgreSQL query planner正确的选择,需要确保所有表的统计信息都是最新的(pg_statistic),当然一般情况下autovacuum daemon会自动处理,但是有些时候 table因大批量的change而无法保持最新时,可能需要手工运行ANALYZE而不是等待autovacuum

In order to measure the run-time cost of each node in the execution plan, the current implementation of EXPLAIN ANALYZE adds profiling overhead to query execution.
 As a result, running EXPLAIN ANALYZE on a query can sometimes take significantly longer than executing the query normally. 
 The amount of overhead depends on the nature of the query, as well as the platform being used. 
 The worst case occurs for plan nodes that in themselves require very little time per execution, and on machines that have relatively slow operating system calls for obtaining the time of day.

Explain基础

查询计划的结构是一个计划结点的树。最底层的结点是扫描结点:它们从表中返回未经处理的行。 
不同的表访问模式有不同的扫描结点类型:顺序扫描、索引扫描、位图索引扫描。 也还有不是表的行来源,例如VALUES子句和FROM中返回集合的函数,它们有自己的结点类型。
如果查询需要连接、聚集、排序、或者在未经处理的行上的其它操作,那么就会在扫描结点之上有其它额外的结点来执行这些操作。 
并且,做这些操作通常都有多种方法,因此在这些位置也有可能出现不同的结点类型。
 EXPLAIN给计划树中每个结点都输出一行,显示基本的结点类型和计划器为该计划结点的执行所做的开销估计。
  第一行(最上层的结点)是对该计划的总执行开销的估计;计划器试图最小化的就是这个数字。

Cost(成本计算)

https://www.cnblogs.com/ctypyb2002/p/9792907.html

Query planner数据存在哪里?

vacuum

意义:

autovacuum

analyze

vacuum full

标签:结点,planner,EXPLAIN,boolean,query,ANALYZE
From: https://www.cnblogs.com/Jeona/p/17690143.html

相关文章

  • jQuery还有必要学吗?
    在当今的前端SPA(单页应用)项目的大环境下,结合当下求职的常见要求,我认为jQuery仍然具有重要性,有必要学习。一、jQuery已不再发布新版本自从jQuery3.0发布以来,jQuery团队已经停止发布新版本。这似乎给人们一种印象,即jQuery已经过时,不值得学习了。然而,实际情况并非如此。尽管jQuery不......
  • web前端技能方法总结(css、js、jquery、html)(2)
    创建链接块display:block;列表样式在一个无序列表中,列表项的标志(marker)是出现在各列表项旁边的圆点。在有序列表中,标志可能是字母、数字或另外某种计数体系中的一个符号。要修改用于列表项的标志类型,可以使用属性list-style-type:ul{list-style-type:square;}1上面的声明把......
  • mysql explain
    MYSQLExplain解析explain说明用于查看sql语句都执行计划,可以看到sql语句都执行了哪些索引,以及执行的顺序等等。主要作用是优化sql语句,提高sql语句的执行效率。|id|select_type|table|type|possible_keys|key|key_len|ref|rows|Extra|idse......
  • web前端技能方法总结(css、js、jquery、html)
    CSS设置背景(background)背景颜色background-color背景图片background-image背景重复background-repeat:repeat-x/repeat-y背景位置background-position:bottom/left/top/right/center背景关联background-attachment:fixed/scroll综合写法:.tagName{background:#ffffffurl(“a......
  • 详细说明 BootStrap整合 BootStrap 【整合V3版本的,需要依赖JQuery】
    文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享?踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。前言以下这个图说明了、如果你使用的是BootStrapV3,那么你在使用BootStrap的时候,同时需要依赖Jquery。这一篇文章......
  • Jquery向json对象添加键值对,读取键值对,删除键值对
    添加键值对varlabelName={};labelName["Name"]="James"labelName["Sex"]="1"结果:labelName={"Name":"James","Sex":1};读取键值对vargetData={"Label":"Dong","Sex"......
  • 使用Qt连接SQLite数据库(ODBC方式)|QSqlQuery的常用功能
    SQLite是一种轻量级的嵌入式数据库,而Qt是一个强大的跨平台应用程序开发框架。本文将介绍如何使用Qt以ODBC方式连接SQLite数据库,以及执行简单的数据库操作。准备工作在开始之前,确保您已经进行了以下准备工作:安装Qt:如果尚未安装Qt,您可以从官方网站下载并安装Qt开发环境。安装ODBC驱动......
  • CloudQuery ✖️ PolarDB:让数据库管理更简单
    近日,CloudQuery数据操作管控平台与阿里云PolarDB数据库管理软件,完成产品集成认证测试。也在以下功能上完善了用户使用PolarDB的体验,使数据库的管理更加安全高效。1.支持在CloudQuery中创建连接,便于进行数据库管控。2.支持编辑连接、资源纳管、连接池管理以及连接设置,可设置......
  • explain | 索引优化
    前言对于互联网公司来说,随着用户量和数据量的不断增加,慢查询是无法避免的问题。一般情况下如果出现慢查询,意味着接口响应慢、接口超时等问题。如果是高并发的场景,可能会出现数据库连接被占满的情况,直接导致服务不可用。慢查询的确会导致很多问题,我们要如何优化慢查询呢?主要解决......
  • jQuery 层次选择器
    jQuery层次选择器(0)测试前的准备工作A.定义测试对象B.定义测试对象的CSS样式C.再定义一些测试用的button。(1)所有后代选择器(AB)所有后代,包括其直接后代及间接后代。(2)直接后代选择器(A>B)直接后代,不包含其孙子后代等。(3)下一个兄弟选择器(A+B)只包含指定对象的下一个兄弟,而不......