PolarDB PostgreSQL版數(shù)據(jù)庫主體空間主要被用戶數(shù)據(jù)和WAL日志占用。

查詢數(shù)據(jù)空間

查詢數(shù)據(jù)空間包括以下內(nèi)容:

  • 數(shù)據(jù)庫

    通過PG客戶端執(zhí)行\l ,可以查看每個(gè)數(shù)據(jù)庫的空間占用情況注意該操作需要遍歷目錄樹,會(huì)有較高的CPU和IO開銷。

  • 對于占用空間較大的數(shù)據(jù)庫,可以通過客戶端連接到該數(shù)據(jù)庫,執(zhí)行\d 查看該數(shù)據(jù)庫每個(gè)表的空間占用情況。

查詢WAL日志

執(zhí)行以下SQL可查看當(dāng)前WAL日志占用空間:
SELECT pg_size_pretty(SUM(size)) FROM pg_ls_waldir();
一般WAL占用空間較大有以下幾種原因:
  • 參數(shù) wal_keep_segments 設(shè)置過大。參數(shù) wal_keep_segments 表示最少保留的WAL文件數(shù)量。

    解決思路:可通過 SHOW wal_keep_segments檢查參數(shù)設(shè)置。此外可通過SHOW wal_segment_size獲知單個(gè)WAL文件大小,幫助預(yù)估WAL最少會(huì)占用多少空間。

  • 在 archive_mode=on 的情況下,WAL文件沒有及時(shí)歸檔。

    解決思路:可觀察配置項(xiàng) archive_command 是否配置正常。

  • pg_replication_slots 同步延遲過大或存在活躍狀態(tài)為 false 的復(fù)制槽。

    解決思路:需進(jìn)一步檢查復(fù)制槽連接是否正常。

  • checkpoint進(jìn)程處理不及時(shí)。

    解決思路:需及時(shí)清理。