小编Ulo*_*oPe的帖子

Postgres 报告的表/数据库大小与转储大小差异很大

我对一个特定数据库的大小有一个非常奇怪的误报。

根据\l+psqlDB 大小是 292 MB。

对以下语句报告的大小进行求和也报告非常接近 292 MB。

SELECT
    table_name,
    pg_size_pretty(total_size) AS total_size
FROM (
    SELECT
        table_name,
        pg_total_relation_size(table_name) AS total_size
    FROM (
        SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
        FROM information_schema.tables
    ) AS all_tables
    ORDER BY total_size DESC
) AS pretty_sizes
Run Code Online (Sandbox Code Playgroud)

然而pg_dump,这个数据库的一个产生了一个 2.02 GB 的 sql 文件

我怀疑这两种计数方法都会跳过 LOB,因为该数据库中有两个表包含TEXT内容较大的字段(每行最多 ~4MB)。

有没有办法在大小计算中包含 LOB?

编辑: 它变得更奇怪了:

这个查询:

SELECT SUM(LENGTH(text_column))
FROM some_table
Run Code Online (Sandbox Code Playgroud)

给出 2,091,245,318(即 2.02 GiB)的结果,大约是转储的大小。

postgresql database-size

5
推荐指数
1
解决办法
2282
查看次数

标签 统计

database-size ×1

postgresql ×1