SQL语句执行卡住类问题 可能影响 同步复制备机异常或延迟,导致DDL、DML、COMMIT语句等待处理等待状态。 解决步骤 1. 检查同步复制备机状态,尝试修复; 2. 如果不能快速修复,在与业务侧沟通取得确认后,可暂时将同步复制模式更为异步复制; > 修改为异步方法参考:修改主节点配置文件postgresql.conf.user 中以下参数: synchronouscommit local synchronousstandbynames'' > 配置文件修改完成后,执行select pgreloadconf();重新加载配置; 3. 修复同步复制备机,恢复同步复制模式。 SQL语句执行慢的问题 问题描述 平时正常执行的SQL,某个时刻执行了很长时间仍未返回结果,但未找到阻塞的会话,也没有同步事务阻塞,正常执行中,仅是执行慢。 可能因统计信息不准确而生成了差的执行计划,执行时间太长。 可能影响 平时正常执行的SQL,某个时刻执行了很长时间仍未返回结果,导致相应业务受影响。 解决方案 1. 手动执行explain SQL查看执行计划,确认执行计划是否符合预期; 2. 有条件的情况,可以执行explain (analyze,verbose,buffers) SQL查看实际执行计划,找到具体慢的位置,并进行相应优化; 3. 对于应用调用SQL使用绑定变量的情况,需要核实传入的变量类型与字段类型是否匹配,是否有隐式类型转换导致分布键、索引失效; 4. 是否有truncate+insert等大批量数据变更,导致统计信息不准确;可以尝试手动收集该表的统计信息,然后再执行SQL语句; 5. 借助一些插件,观察应用调用的SQL语句执行过程中的执行计划,验证执行计划是否是符合预期的。