转载: PostgreSQL SQL的性能调试方法1--借助统计信息

转载: PostgreSQL SQL的性能调试方法1--借助统计信息,第1张

概述  原文:http://blog.csdn.net/hantiannan/article/details/4509231 在数据库应用开发中,速度慢的SQL比比皆是。很多速度很慢都是SQL写的不好,效率不高。比如无用的循环查询,判断,不必要的子查询,写的SQL用不上索引等等。特别是数据量很大的时候,很是头疼。我就遇到过几千万条数据的表的查询,由于子查询过多,要几个小时才执行完。显然是不符合要求的。

原文:http://blog.csdn.net/hantiannan/article/details/4509231


在数据库应用开发中,速度慢的sql比比皆是。很多速度很慢都是sql写的不好,效率不高。比如无用的循环查询,判断,不必要的子查询,写的sql用不上索引等等。特别是数据量很大的时候,很是头疼。我就遇到过几千万条数据的表的查询,由于子查询过多,要几个小时才执行完。显然是不符合要求的。

怎么改善呢?

要解决个速度问题,我首先最主要的是要找到那些sql很慢,或者sql中的那部分很慢。怎样寻找速度很慢的sql,我可以借助系提供的统计信息功能来找。
1.pg_stat_user_functions:sql文中用了存储过程或者函数的情况,可以通过这统计信息vIEw来看。
funcID,schemaname,funcname :函数的ID
calls:行回数
total_time :函数行的时间位毫秒。
self_time :不包含其他函数的时间的自己本身的时间
例子:
=#SELECT * FROM pg_stat_user_functions;
funcID | schemaname | funcname | calls |total_time | self_time
--------+------------+----------+-------+------------+-----------
16434 |public| proc_1|4|185|185
16738 |public| proc_2|5|91|91
16741 |public| proc_3|2|76|5
(3 rows)
里面我可以看到proc_3自己自身行的时间时间时间非常少,可以初步确定速度慢的函数不是proc_3。因此我就需要去查询其他函数的时间
个机能系是没有的,需要在postgresql.conf里面置。默是none。需要改pl或者all。
track_functions = pl # none,pl,all
2.pg_stat_statements:contrib/pg_stat_statements模下的机能,系也是没有的。
userID:行sql的用
dbID : 数据ID
query : sql文
calls:行回数
total_time:总时间位微秒。
rows:理行数。返回的行数或者修改的行数。
例子:
SELECT query,calls,total_time,rows
FROM pg_stat_statements ORDER BY total_time DESC liMIT 3;
-[RECORD 1]------------------------------------------------------------
query| UPDATE branches SET bbalance = bbalance + $1 WHERE bID = $2;
calls| 3000
total_time | 35.9654100
rows| 3000
个功能也是需要在postgresql.conf里面置。
shared_preload_librarIEs ='pg_stat_statements'
custom_variable_classes ='pg_stat_statements'
上面的两种方法我就可以找到那些sql或者函数很慢,这样就能够对症下了,要不然真是找不原因,很耗费时间
总结

以上是内存溢出为你收集整理的转载: PostgreSQL SQL的性能调试方法1--借助统计信息全部内容,希望文章能够帮你解决转载: PostgreSQL SQL的性能调试方法1--借助统计信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1177050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存