Postgres 与Oracle对比(进程结构与并发控制)
一.进程结构
Postgres中主要有以下几种进程:
postmaster, postgres, vacuum, bgwriter, pgarch, walwriter, pgstat
(1)postmaster
负责在启动数据库的时候创建共享内存并初始化各种内部数据结构,如锁表,数据库缓冲区等,该进程在数据库中只有一个。
在数据库启动以后负责监听用户请求,创建postgres进程来为用户服务。这一点与Oracle的TNS listener进程类似。
(2)postgres
负责执行用户发出的所有SQL语句,该进程在数据库中可能有多个, Oracle中叫shadow process。
(3)vacuum
负责清除数据库中无用的历史数据(已经被删除或更新的记录)。
更新优化器的统计信息,确保产生可以接受的查询计划,该进程在数据库可能有多个,
Oracle无此种类型进程。
(4)bgwriter
负责将数据缓冲区中已被更新的数据库写入数据库物理数据文件中, Oracle中对应的进程叫DBWR, 该进程在数据库中只有一个。
(5)pgarch
负责将系统产生的redo log复制到其他外部存储介质中, Oracle中对应的进程叫Archiver,该进程在数据库中只有一个。
(6)walwriter
负责将系统产生的redo log 写到redo log 文件中(在pg_xlog目录下), Oracle中对应的进程叫LGWR,该进程在数据库中只有一个。
(7)pgstat
负责收集数据
一.进程结构
Postgres中主要有以下几种进程:
postmaster, postgres, vacuum, bgwriter, pgarch, walwriter, pgstat
(1)postmaster
负责在启动数据库的时候创建共享内存并初始化各种内部数据结构,如锁表,数据库缓冲区等,该进程在数据库中只有一个。
在数据库启动以后负责监听用户请求,创建postgres进程来为用户服务。这一点与Oracle的TNS listener进程类似。
(2)postgres
负责执行用户发出的所有SQL语句,该进程在数据库中可能有多个, Oracle中叫shadow process。
(3)vacuum
负责清除数据库中无用的历史数据(已经被删除或更新的记录)。
更新优化器的统计信息,确保产生可以接受的查询计划,该进程在数据库可能有多个,
Oracle无此种类型进程。
(4)bgwriter
负责将数据缓冲区中已被更新的数据库写入数据库物理数据文件中, Oracle中对应的进程叫DBWR, 该进程在数据库中只有一个。
(5)pgarch
负责将系统产生的redo log复制到其他外部存储介质中, Oracle中对应的进程叫Archiver,该进程在数据库中只有一个。
(6)walwriter
负责将系统产生的redo log 写到redo log 文件中(在pg_xlog目录下), Oracle中对应的进程叫LGWR,该进程在数据库中只有一个。
(7)pgstat
负责收集数据