【问题标题】:pg_relation_size command is not providing size [duplicate]pg_relation_size 命令未提供大小 [重复]
【发布时间】:2013-09-24 05:04:10
【问题描述】:

我需要在 posgreSQL 中找到一个表的大小。我正在使用以下命令,但它给了我 0 作为输出。你能告诉我如何获得一张桌子的大小吗?

输入:

select pg_relation_size('tableName');

输出:

pg_relation_size 

  0

(1 row)

【问题讨论】:

  • tableName有数据吗?
  • 是的,tableName 包含数据
  • 尝试使用pg_total_relation_size 而不是pg_relation_size
  • 我试过了,但也没用。
  • 也许你有两个同名的表,一个在搜索中为空,一个为空,一个不在搜索路径中?您是否尝试过包含架构,例如select pg_relation_size('public.tableName');?

标签: sql postgresql postgresql-9.1


【解决方案1】:

这可能是因为tableName 是一个视图。

例子:

CREATE VIEW dummy AS SELECT 1;
SELECT pg_relation_size('dummy');

结果:

pg_relation_size ------------------ 0 (1 行)

【讨论】:

    【解决方案2】:

    我知道这很古老,但我遇到了同样的问题。 这是因为该表是一个分区表,所以从技术上讲,它没有实际大小。要获取所有分区的总大小,请查看this question

    或者您可以简单地使用继承目录,例如:

    SELECT count(*) AS child_amount, pg_size_pretty(sum(pg_relation_size(inhrelid::regclass))) AS child_size
    FROM pg_inherits 
    WHERE inhparent='tableName'::regclass;
    

    【讨论】:

    • 请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。
    猜你喜欢
    • 2021-12-11
    • 2015-05-31
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多