加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL优化

发布时间:2020-12-13 16:56:45 所属栏目:百科 来源:网络整理
导读:我们经常会遇到死锁的表,通过以下命令,可以查询到死锁的表。 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 jo

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

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'
) bb
where 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);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读