PostgreSQL优化

PostgreSQL优化,第1张

概述 我们经常会遇到死锁的表,通过以下命令,可以查询到死锁的表。 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

我们经常会遇到死锁的表,通过以下命令,可以查询到死锁的表。

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优化所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存