> 数据库 > PostgreSQL >

PostgreSQL 10.0 的三种日志

当前使用版本为PostgreSQL

[postgres@localhost ~]$ psql
psql (10.7)

网络上还存在大量的帖子,关于pg_log,xlog,clog
刚刚接触PG的我一直没有找到这些目录,查资料发现,从PG 10.0开始,目录的名称已经更改

pg_xlog ---- pg_wal (WAL 日志,即重做日志) 强制开启 
pg_clog ---- pg_xact (事务提交日志,记录的是事务的元数据) 内容一般不具有可读性 强制开启 
pg_log ---- log pg_log(数据库运行日志) 内容可读 默认关闭的,需要设置参数启动

pg_wal

WAL日志,相当于Oracle的在线重做日志,二进制文件,一般
WAL机制的引入,即保证了事务持久性和数据完整性,又尽量地避免了频繁IO对性能的影响。

WAL机制实际是在这个写数据的过程中加入了对应的写wal log的过程,步骤一样是先到Buffer,再刷新到Disk。

Change发生时:
先将变更后内容记入WAL Buffer
再将更新后的数据写入Data Buffer
Commit发生时:
WAL Buffer刷新到Disk
Data Buffer写磁盘推迟
Checkpoint发生时:
将所有Data Buffer刷新到磁盘

clipboard

clipboard1

pg_xact

pg_xact这个目录下的文件也是事务日志文件,但与pg_wal不同的是它记录的是事务的元数据(metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。

pg_log

这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类
相当于Oracle 的alert日志,记录的信息要更详细。
当数据库出问题时,首先就要查看这个日志


 

(责任编辑:IT)