当前使用版本为 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
来源: https://yq.aliyun.com/articles/694169