26.pg_wal缓冲区浅析

1.内存结构如下

 可以看到在共享内存中有一块区域叫做wal buffer,为了快速写操作,WAL首先写到内存,然后异步写到磁盘。写入内存的区域称为WAL缓冲区,由参数wal_buffer
控制,默认值为shared_buffers值的1/32。并且WAL Writter进程将以200ms的默认设置将内存中的WAL缓冲区写入磁盘。它由bgwriter_delay

arondb=# show shared_buffers;
 shared_buffers 
----------------
 128MB
(1 row)

arondb=# show wal_buffers;
 wal_buffers 
-------------
 4MB
(1 row)

arondb=# show bgwriter_delay;
 bgwriter_delay 
----------------
 200ms
(1 row)

以下情况wal writer进程会把缓冲区数据写入磁盘,这样就能最大程度避免了崩溃时数据不一致的情况。

  • wal writer定期执行
  • 执行COMMIT 时
  • 执行checkpoint时
  • 运行vacuum时
  • WAL缓冲区溢出时
  • 共享缓冲区溢出时

 

wal日子归档级别

 

posted on 2024-04-28 16:18  太白金星有点烦  阅读(20)  评论(0编辑  收藏  举报

导航