PolarDB PostgreSQL版(兼容Oracle)数据库主体空间主要被用户数据和WAL日志占用。
查询数据空间
查询数据空间包括以下内容:
- 数据库
通过PG客户端执行\l ,可以查看每个数据库的空间占用情况注意该操作需要遍历目录树,会有较高的CPU和IO开销。
- 表
对于占用空间较大的数据库,可以通过客户端连接到该数据库,执行\d 查看该数据库每个表的空间占用情况。
查询WAL日志
执行以下SQL可查看当前WAL日志占用空间:
SELECT pg_size_pretty(SUM(size)) FROM pg_ls_waldir();
一般WAL占用空间较大有以下几种原因:
- 参数 wal_keep_segments 设置过大。参数 wal_keep_segments 表示最少保留的WAL文件数量。
解决思路:可通过 SHOW wal_keep_segments检查参数设置。此外可通过SHOW wal_segment_size获知单个WAL文件大小,帮助预估WAL最少会占用多少空间。
- 在 archive_mode=on 的情况下,WAL文件没有及时归档。
解决思路:可观察配置项 archive_command 是否配置正常。
- pg_replication_slots 同步延迟过大或存在活跃状态为 false 的复制槽。
解决思路:需进一步检查复制槽连接是否正常。
- checkpoint进程处理不及时。
解决思路:需及时清理。