PostgreSQL bind <unnamed>: slow SQL case record 查询慢

最近某库经常有SQL非常慢。经过检查都是走索引的SQL,直接在PSQL执行时是正常的速度。

SQL如下:

parameters: $1 = '127385207'
duration: 20709.311 ms bind <unnamed>: SELECT skyid,currency_id,currency_amt,currency_amt as currency_amt2 FROM tbl_cmnt_currency_user_account_p28 WHERE skyid = $1 AND currency_id <> 2

情况分析:

1. 出现这种慢SQL的时候服务器LOAD非常高。看起来就像HANG住了。

2. 这种SQL的出现都是在同一个时刻大批量出现,一般一次有几十条,每次出现的时间点不能确定。

3. 同一批出现的是同一个表。

4. 不同批出现的有多个表。

5. 出现这类慢SQL的时候数据库的IO等待在正常水平。

从情况上来看,引起慢的原因可能是表被加锁了。

另外,当手工给数据库做CHECKPOINT时有时也会引发这个问题。

最后与开放人员沟通后,发现这些表上都有6个以上的索引,去掉这些索引后,慢的情况好了很多。几乎不再发生。

可能原因分析:

1. 查询时,表相关的索引更新,导致表相关PAGE或全表被加锁了,索引越多,加锁概率越高。

监控手段:

加入锁监控,以便详细分析。

相关文章

文章浏览阅读601次。Oracle的数据导入导出是一项基本的技能,...
文章浏览阅读553次。开头还是介绍一下群,如果感兴趣polardb...
文章浏览阅读3.5k次,点赞3次,收藏7次。折腾了两个小时多才...
文章浏览阅读2.7k次。JSON 代表 JavaScript Object Notation...
文章浏览阅读2.9k次,点赞2次,收藏6次。navicat 连接postgr...
文章浏览阅读1.4k次。postgre进阶sql,包含分组排序、JSON解...