PostgreSQL优化

前端之家收集整理的这篇文章主要介绍了PostgreSQL优化前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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);

猜你在找的Postgre SQL相关文章