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); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |