在未记录的表上WALWriteLock

时间:2018-08-17 16:04:25

标签: postgresql

我们在连接到postgres数据库的pgbouncer上遇到了一些连接高峰。在这些峰值期间查询pg_stat_activity时,我们看到大量wait_event WALWriteLock的活动查询。

我们将一些高度插入的表更改为未记录,但在峰值为wait_eventWALWriteLock的尖峰期间,仍显示这些表中的插入。我认为,如果未记录表,则不会在等待WALWriteLock的情况下插入该表。有什么作用?

进一步,关于如何阻止这些峰值的任何建议?

2 个答案:

答案 0 :(得分:0)

WALWriteLock:在将WAL记录刷新到磁盘上或在WAL段切换期间,由PostgreSQL进程产生。 sync_commit = off删除等待磁盘刷新的时间,full_page_writes = off减少刷新数据的数量。 您可以尝试上面也在dec中提到的:- https://www.percona.com/blog/2018/10/30/postgresql-locking-part-3-lightweight-locks/

答案 1 :(得分:0)

一个可能的答案是,尽管没有将表本身写入WAL,但COMMIT仍然写入WAL,如果您进行许多小事务,则可能会显示出来。看看是否可以将插入分组到更少的事务中。