首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL-数据文件

PostgreSQL-数据文件
EN

Stack Overflow用户
提问于 2016-12-14 18:43:28
回答 1查看 473关注 0票数 1

哪个进程在PostgreSQL中写入数据文件?

postgreSQL中的数据文件是什么?

注意:在postgreSQL-9.5上执行插入/更新/删除操作。我想验证哪个进程正在磁盘上执行提交,即数据文件。WAL和数据文件的使用。

EN

回答 1

Stack Overflow用户

发布于 2016-12-14 19:33:39

PostgreSQL数据库集群的数据文件位于数据目录的data子目录下。它们由三个进程编写:

  • 将脏数据块从缓冲区写回磁盘的后台写入器进程,以确保有足够的干净块。
  • 检查指针进程,它在特定时间(检查点)将所有脏块写入磁盘,以提供崩溃恢复的起点。
  • 仅在后台写入器跟不上并且没有足够可用块时,才将数据写入磁盘。

位于pg_xlog中的预写日志或WAL则完全不同。它由紧接在COMMIT之前的后端进程写入,以确保在崩溃的情况下恢复事务所需的信息被安全地写入磁盘。位于pg_clog中的提交日志也是如此,它包含事务是否已提交或回滚的信息。

可以在COMMIT之前将数据写入数据文件,但只有在提交事务时,这些数据才可见。

值得一提的是,不仅DML语句会导致数据块被弄脏:

  • 后台进程“autovacuum”定期扫描表和索引并删除未使用的条目。
  • 读取新写入的数据的第一个进程将在提交日志中查找提交信息,并将提示位写入元组,以便以后的读者不必再次执行该工作。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41140598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档