PostgreSQL 9.6了解wal文件

问题描述 投票:1回答:2

我正在尝试了解wal文件的行为。数据库的沃尔玛相关设置如下:

"min_wal_size"  "2GB"   
"max_wal_size"  "20GB"
"wal_segment_size"  "16MB"
"wal_keep_segments" "0"
"checkpoint_completion_target"  "0.8"
"checkpoint_timeout"    "15min"

wal文件的数量始终为1281或更高:

SELECT COUNT(*) FROM pg_ls_dir('pg_xlog') WHERE pg_ls_dir ~ '^[0-9A-F]{24}';
-- count 1281

据我了解,这意味着wal文件当前永远不会低于max_wal_size(1281 * 16 MB = 20496 MB = max_wal_size)??

我希望在达到检查点并将数据同步到磁盘后,沃尔玛文件的数量会减少到最大数量以下。但这显然不是事实。我想念什么?

postgresql postgresql-9.6 wal
2个回答
0
投票
predicted future use,而不是删除它们。一旦被回收,它们将永远都不会被删除,直到它们被使用为止(您可能会说那是一个错误),并且如果服务器现在大部分处于空闲状态,则将需要很长时间才能使用它们,因此将它们删除。

0
投票

pg_xlog目录中WAL段文件的数量取决于min_wal_sizemax_wal_size和先前检查点周期中生成的WAL数量。

当不再需要旧的日志段文件时,它们将被删除或回收(即,按编号顺序重命名为将来的段)。如果由于日志输出速率的短期峰值而超出max_wal_size,则将删除不需要的段文件,直到系统恢复到此限制之下。低于该限制,系统将回收足够的WAL文件以满足估计的需求,直到下一个检查点为止,然后删除其余的文件

因此,根据您的观察,您可能正在观察“回收”效应-旧的WAL文件将被重命名而不是被删除。这样可以为磁盘节省一些I / O,尤其是在繁忙的系统上。

请记住,一旦某个特定文件被回收,在使用完该文件(即到达相关的LSN并checkpoint)之前,不会再次考虑将该文件再次删除/回收。如果您的系统突然变得不那么活跃,那可能会花费很长时间。
© www.soinside.com 2019 - 2024. All rights reserved.