PostgreSQL是一个很老的系统,可以追溯到1996;它被很多用户在多种操作系统上运行。因此,PostgreSQL开发商被他们可以添加的Linux指定代码的数量所限制。它是基于合作进程的,没使用线程。系统 V 共享内存用于进程间通信。重要的是,PostgreSQL维护它自己的内部缓冲区,但也使用 I/O 缓冲来读写磁盘数据。这种缓冲的组合导致了 PostgreSQL 用户所经历的一些问题。
同步缓慢
第一个被描述的问题是关于数据如何从缓冲区高速缓存保存到磁盘上。PostgreSQL 使用了一种形式的日志记录,他们称之为“预写式日志”。变化之处首先写入到日志中;一旦日志安全的保存在磁盘上,主要的数据库块就能被回写。这个工作中很多都通过一个“检查点”进程来完成;它写入日志条目,之后将一批数据写回到磁盘上的各种文件中。这种带有日志能力的写操作相对而言小而连续;他们的工作效果不错,并且,据 Andres 所说,PostgreSQL 的开发者对系统这部分在 Linux 上的运行情况足够满意。