暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
网络和游标,可能在默默拖慢你的 Postgres 查询.doc
72
6页
10次
2025-04-26
免费下载
网络和游标,可能在默默拖慢你的
Postgres
查询
原创 红石PG
   

中有各种监控统计查询性能的工具,这些工具对于数据库
服务端的性能分析,都还不错。但是,可能都忽略了由通信网络环境带来的潜
在影响。
介绍
  在

中,很多时候用户会对运行日志中报告的查询
语句持续
时间感到困惑。其他的

工具,如

,会根据日志文件显
示相同的数据,这进一步增加了混淆。了解与网络相关开销和游标带来的全部
影响,不仅对于减少混淆很重要,而且对于获得最佳性能也很重要。
  那为什么要专门讨论下网络开销和游标呢?因为,它们是查询执行之后或
过程中的隐藏成本。一旦查询执行开始,并且有一些数据要提供给客户端,这
些就是主要影响性能的因素。因此,我们可能需要记住的重要一点是,由于所
有这些都发生在查询执行之外,所以无法通过

获得相应
的信息。
网络的影响
  在演示中,这里使用了基于

表的查询。
 !"#$%!
 !%&"#$%%' 
( ) *
  此查询没有实际意义。选择的是一个随机查询,该查询在数据库中需要一
些时间才能执行。
  为了捕获

的输出,使用了
%$+ 
。进行设置
以捕获所有耗时超过
,-.
毫秒的语句。
/0/1/%$+ $# $% 2,-.*
  使用

捕获其他详细信息的其他一些设置,还包括:
/0/1/%$+ $'32*
/0/1/%$+ $%42*
/0/1/%$+ $ # 2*
/0/1/%$+ $52*
/0/1/%$+ $ 2*
/0/1/%$+ $(2*
  为了说明差异,将从以下位置执行相同查询
6
数据库主机服务器
,
通过网络连接的应用程序主机服务器
  返回大量行的查询
  场景
6
在数据库主机服务器上执行
  以下是由
%$+ 
生成的

日志中的几行信息:
,.,78.98.,.:;,<;-=:7<>/?@,--:<ABC;% ;6-D6<97#
;
%'/+; !"#$%!
 !%&"#$%%' 
( ) *
26,:,,6:=:.,.7=(29:::::
( 26,% #266D<:D6.=DD,7(26......
26
B%%; !
E F ; ) 
0(0#5'E F ;6-.....

  正如我们所看到的,查询的外部嵌套循环用时
6.=DD,7
毫秒,返回了
6..
万条记录,但查询的总持续时间报告为
6-D6<97
毫秒。这有什么区别
吗?
  直接的

表明,对于这个简单的查询,规划时间为亚
毫秒级,其中的数据来自一个没有任何索引的单个表。所以规划时间不应该是
原因。
  场景
,
从远程应用主机服务器执行
  同样,

日志中的信息看起来不太一样:
,.,78.98.,.7;.9;-9D-->/?@,-=6<ABC;% ;=-=9=-D#
;
%'/+; !"#$%!
 !%&"#$%%' 
( ) *
26,:,,6:=:.,.7=(29:::::
( 26,% #267.=776.=D6-:(26......
26
B%%; !
E F ; ) 
0(0#5'E F ;6-.....

   正如我们所看到的,语句持续时间跃升至
=-=9=-D
毫秒!尽管查询的
实际执行时间几相同,为
6.=D6-:
毫秒。这是一个大的差异。这可能是
什么原因成的呢?
  返回少量行的查询
  上查询可以稍作修改,以仅返回最大修改后的测试查询可能如下所
示:
#+ !#+"#$%!
 !%&"#$%%' 
( ) *
  了有一个外的聚合节点外,查询计划或时间不会发生太大变化使
在计划中有我们正在讨论的主无关的变化,因为我们只考虑查询执行的外
点,与

报告的持续时间之间的时间差。
  场景
6
在数据库主机服务器上执行
,.,78.98.:.=;-9;67:=7>/?@,96,DABC;% ;6.6667:#
;
%'/+;#+ !#+"#
of 6
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜