PostgreSQL基本调优知识,Update效率优化

好久没有写博客了,之前的公司太忙了,今天开始写,特此记录。

一、EXPLAIN介绍

使用EXPLAIN
Postgresql为每个收到的查询设计一个查询规划。选择正确的匹配查询结构和数据属性的规划对执行效率是至关重要要的,所以系统包含一个复杂的规划器来试图选择好的规划。你可以使用EXPLAIN命令查看查询规划器创建的任何查询。阅读查询规划是一门艺术,需要掌握一定的经验,本节试图涵盖一些基础知识。
以下的例子来自Postgresql 9.3开发版。
EXPLAIN基础
查询规划是以规划为节点的树形结构。树的最底节点是扫描节点:他返回表中的原数据行。
不同的表有不同的扫描节点类型:顺序扫描,索引扫描和位图索引扫描。
也有非表列源,如VALUES子句并设置FROM返回,他们有自己的扫描类型。
如果查询需要关联,聚合,排序或其他操作,会在扫描节点之上增加节点执行这些操作。通常有不只一种可能的方式做这些操作,所以可能出现不同的节点类型。
EXPLAIN的输出是每个树节点显示一行,内容是基本节点类型和执行节点的消耗评估。可能会楚翔其他行,从汇总行节点缩进显示节点的其他属性。第一行(最上节点的汇总行)是评估执行计划的总消耗,这个值越小越好。
下面是一个简单的例子:
  1. EXPLAINSELECT*FROMtenk1;
  2. QUERYPLAN
  3. -------------------------------------------------------------
  4. SeqScanontenk1(cost=0.00..458.00rows=10000width=244)
因为这个查询没有WHERE子句,所以必须扫描表中的所有行,所以规划器选择使用简单的顺序扫描规划。括号中的数字从左到右依次是:
  • 评估开始消耗。这是可以开始输出前的时间,比如排序节点的排序的时间。
  • 评估总消耗。假设查询从执行到结束的时间。有时父节点可能停止这个过程,比如LIMIT子句。
  • 评估查询节点的输出行数,假设该节点执行结束。
  • 评估查询节点的输出行的平均字节数。

二、使用EXPLAIN

EXPLAIN + sql语句
EXPLAIN(verbose,analyze,buffers,timing) + sql语句

未完待续。。。。

相关文章

项目需要,有个数据需要导入,拿到手一开始以为是mysql,结果...
本文小编为大家详细介绍“怎么查看PostgreSQL数据库中所有表...
错误现象问题原因这是在远程连接时pg_hba.conf文件没有配置正...
因本地资源有限,在公共测试环境搭建了PGsql环境,从数据库本...
wamp 环境 这个提示就是说你的版本低于10了。 先打印ph...
psycopg2.OperationalError: SSL SYSCALL error: EOF detect...