当前使用版本为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刷新到磁盘
pg_xact
pg_xact这个目录下的文件也是事务日志文件,但与pg_wal不同的是它记录的是事务的元数据(metadata),这个日志告诉我们哪些事务完成了,哪些没有完成。这个日志文件一般非常小,但是重要性也是相当高,不得随意删除或者对其更改信息。
pg_log
这个日志一般是记录服务器与DB的状态,比如各种Error信息,定位慢查询SQL,数据库的启动关闭信息,发生checkpoint过于频繁等的告警信息,诸如此类
相当于Oracle 的alert日志,记录的信息要更详细。
当数据库出问题时,首先就要查看这个日志
文章引用
https://www.jianshu.com/p/a37ceed648a8 PostgreSQL持久性优化机制——WAL