为什么PostgreSQL需要WAL缓冲区和WAL段文件?

ewm0tg9j  于 2023-03-08  发布在  PostgreSQL
关注(0)|答案(3)|浏览(176)

我试图了解更多关于apacheAGE扩展的内容,因此我正在阅读PostgreSQL的内部工作原理。据我所知,每一个改变表的操作都被写入WAL缓冲区,但在提交/中止后,它会立即写入存储器上的WAL段文件。
为什么需要第一部分?因为WAL段文件本身就足以从服务器崩溃中恢复,所以两个步骤不是更耗时吗?

zaq34kh6

zaq34kh61#

对于一个只有一个用户的系统上的一个事务来说,是的,直接写入文件会更好,但是如果一个事务中有很多更改,并且有很多并发会话运行事务,那么将每个更改直接写入存储是非常低效的,因为每个日志文件写入需要一毫秒或更长时间。

h5qlskok

h5qlskok2#

WAL缓冲区只是WAL的缓存;最后,数据被写入WAL段文件。2和所有缓存一样,目标是提高性能。

gkl3eglg

gkl3eglg3#

PostgreSQL需要WAL缓冲区和WAL段文件的原因是它提供了一种快速写入和可靠持久性的机制。WAL缓冲区允许数据库快速记录对内存的更改,而无需等待较慢的磁盘I/O操作,这可以提高性能。WAL段文件提供了对数据库所做的所有更改的持久记录,允许崩溃恢复。
你可以研究here

相关问题