最近有些人在问,为什么数据库的wal消耗如此之快。在德哥的博客中给出了一些导致wal日志膨胀的原因,但是我们在拿到这些原因之后只能去修改相关的参数然后去测试,没有办法了解导致wal日志膨胀的真正原因。这个博客给出一个简单的方法来解析wal日志到底消耗在了什么地方,你可以从中获取wal膨胀的原因。
注:关于'wal膨胀'可以有两种理解:1.在一段时间内消耗了太多的LSN;2.$DATA/pg_wal目录下的wal文件太多。这个博客只为了说明第1种情况。
一、统计WAL内容
PostgreSQL内置了wal解析工具pg_waldump,一般我们会用它来简单查看wal的内容,这个工具也可以用来统计各种wal类型的长度,如下图所示:
下面我们简单了解一下如何看懂这个统计结果:
1.1 命令解释
./pg_waldump -p ../walback -s 0/A000000 -e 0/58000000 -stats=record