我们经常会遇到死锁的表,通过以下命令,可以查询到死锁的表。
PG死锁的一次处理。--查询阻塞的sql( 死锁了,没有执行通过的sql )select * from pg_stat_activity aa,(select a.locktype,a.database,a.pID,a.mode,a.relation,b.relname from pg_locks a join pg_class b on a.relation=b.oID where upper(b.relname)='FX_WDSJ_DSZH') bbwhere aa.pID=bb.pID and aa.waiting='t'
遇到过有表不走hash join走nested loop的情况。
执行过analyze table_name; 得以解决。
有遇到过表膨胀的情况,就是postgresql对单一表进行大量的增删改,缺没有降低水位线。
使用vacuum full table 可以降低水位线,注意此 *** 作会锁表。
对订单汇总表进行的vaccum *** 作后,函数运行时长从20min下降到4min
函数内不要进行索引的 *** 作,会产生表的排它锁。索引需要配置成concurrently关键字。
临时表加速:
临时表加速:GREATE UNLOGGED table XXX可以加速临时表创建过程,提高IO速度
对于异常sql的处理:
查看运行的链接状态SELECT * from pg_stat_activity ;-- 取消那条数据的procpID值SELECT pg_cancel_backend(6789);-- 强制杀死那条数据的procpID值 杀进程select pg_terminate_backend(6789);总结
以上是内存溢出为你收集整理的PostgreSQL优化全部内容,希望文章能够帮你解决PostgreSQL优化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)