在每次提交时,PostgreSQL通过直接IO(通过wal_sync_method配置)将WAL刷新到磁盘,以保证持久性.数据文件只需要在共享缓冲区中,以后可以刷新到磁盘.

我的问题是,在每次提交时,postgr是否也会触发一个"write system call"来刷新数据文件?它应该不会影响写延迟,因为写是异步的,内核只将数据从共享缓冲区移动到内核页面缓存,不涉及即时IO.

换句话说,PostgreSQL是否只在判断点期间将数据文件刷新到磁盘,或者是否有其他机制也可以刷新数据文件?

https://youtu.be/1VWIGBQLtxo?si=ZNGu17nm2xj8JpBY&t=291

此视频建议事务提交不会将数据文件写入磁盘.

推荐答案

在事务处理期间,数据通常不会写入数据文件,而只写入WAL.

大多数数据文件的写入都发生在判断点期间,但也有后台工作器缓慢地将一些脏缓冲区写入磁盘,这样就总是有足够的干净缓冲区可供需要共享缓冲区空间的客户端后端进程使用.

Postgresql相关问答推荐

Redis作为postgreSQL嵌套数据的缓存

当通过PostgreSQL FDW中的视图使用时,年龄函数的计算方式不同

到第二天的Postgres计时器

Postgres:创建分区需要很长时间

有没有一种方法可以在参数中添加密码,并在批处理文件中需要时自动获取密码?

为什么我的唯一索引在 Postgresql 中不起作用?

PostgreSQL 连接字符串的正则表达式

如何在 PostgreSQL 的回归测试中测试 TYPE 发送和接收函数

Java - 日期保存为前一天

使用 Django + Postgres 的加密策略?

获取 OperationalError: FATAL: sorry, too many clients already using psycopg2

INSERT RETURNING 是否保证以 right的顺序返回?

如何使用 SpringBoot + JPA 存储 PostgreSQL jsonb?

PostgreSQL INSERT 插入一个枚举数组

psql:致命:connection requires a valid client certificate

IntegrityError:postgres 从转储恢复后,所有具有 ForeignKey 的模型/字段的id列中的空值

Postgres 外键on update和on delete选项如何工作?

PostgreSQL:如何在用户级别设置 search_path?

判断 PostgreSQL 中的角色是否设置了密码

使用 Postgres 在 Rust 的 Diesel 库中添加时间戳