Postgresqlsql的性能调试 |
利用pgadmin中的自带的 |
这个工具也是Postgresql主打的调试工具。 |
1.下面简单介绍一下执行计划结果的读法 |
①Explaining → WIDths |
=# EXPLAIN SELECT oID FROMpg_proc; query PLAN ------------------------------------------ Seq Scan on pg_proc (cost=0.00..87.47 rows=1747 wIDth=4) |
查询结果的所有字段的总宽度。这个参数并不是关键指标。每个字段的宽度定义如下: varchar(n):n+1 char(n):n+1 |
②Explaining → Rows |
③Explaining → Cost |
cost是比较重要的指标。例子中的cost=0.00..87.47有两个部分,启动时间(startup)=0.00和总时间(total)=87.47。单位是毫秒。这个指标也只是预测值。 |
启动时间也有解释为找到符合条件的第一行所花的时间。 |
④Explaining → Explain Analyze |
=# EXPLAIN ANALYZE SELECT oID FROM pg_proc; query PLAN ------------------------------------------ Seq Scan on pg_proc (cost=0.00..87.47 rows=1747 wIDth=4) (actual time=0.077..17.082 rows=1747 loops=1) Total runtime: 20.125 ms |
⑤Explaining → 执行计划运算类型 |
|
下面是一个hash,hash join例子: =# EXPLAIN SELECT relname,nspname FROM pg_class JOIN pg_namespace ON (pg_class.relnamespace=pg_namespace.oID); query PLAN ------------------------------------------------------------------------ Hash Join (cost=1.06..10.71 rows=186 wIDth=128) 两个表间 |
下面是一个nested Loop例子: =# SELECT * FROM pg_foo JOIN pg_namespace ON (pg_foo.pronamespace=pg_namespace.oID); query PLAN ---------------------------------------------------------------------- nested Loop (cost=1.05..39920.17 rows=5867 wIDth=68) 两个表间 |
下面是对表关联的3种结合运算的概念图。 sql的性能调试方法3--查看执行计划" src="http://simg.sinaJs.cn/blog7style/images/common/sg_trans.gif"> |
因为做的哈希表内存装不下,需要输出到硬盘,这样IO读取多了,速度就低下了。 还有可能不如循环结合快。 这个要具体问题具体分析。 |
2. |
执行 |
通过 |
以上是内存溢出为你收集整理的转载:PostgreSQL SQL的性能调试 方法3-- 查 看 执 行 计 划全部内容,希望文章能够帮你解决转载:PostgreSQL SQL的性能调试 方法3-- 查 看 执 行 计 划所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)