PostgreSQL 表大小查询指南

PostgreSQL 提供了多种函数来帮助我们查询表的大小。我们将重点介绍如何利用 ‘pgrelationsize()‘ 函数来获取表的大小,并结合使用 ‘pgsizepretty()‘ 函数来增强输出的可读性。在本文中,我们将使用一个示例数据库作为参考,该数据库的描述见此处,也可以从这里下载。

使用 ‘pgrelationsize()‘ 获取表大小

pgrelationsize()‘ 函数旨在以字节为单位返回指定表的大小。这个函数使用起来非常直观,为我们提供了一种快速评估数据库中任何表原始大小的方法。

语法:

****SELECT ****pg_relation_size(‘table_name‘);

示例 1: 查询 "country" 表的大小

在这里,我们将使用以下命令从示例数据库 ‘dvdrental‘ 中查询 "country" 表的大小:

****SELECT ****pg_relation_size(‘country‘);

输出:

!image

为了使结果更具可读性,我们可以使用 pgsizepretty() 函数。‘pgsizepretty()‘ 函数会接收另一个函数的结果,并根据需要使用 bytes、kB、MB、GB 或 TB 对其进行格式化。

****SELECT**** pg_size_pretty (pg_relation_size(‘country‘));

输出:

!image

虽然输出会显示 "country" 表的字节大小,这很有用,但对于较大的表来说,结果可能不太容易阅读。

使用 ‘pgsizepretty()‘ 增强可读性

为了使输出更具可读性,尤其是在处理大型表时,PostgreSQL 提供了 ‘pgsizepretty()‘ 函数。该函数会将原始字节大小转换为更易读的格式,例如 kB、MB、GB 或 TB,具体取决于大小数值。

语法:

****SELECT ****pg_size_pretty(pg_relation_size(‘table_name‘));

示例 2: 美化显示 "country" 表的大小

在这里,我们将使用以下命令从示例 dvdrental 数据库中查询 "customer" 表的大小:

****SELECT**** pg_size_pretty (pg_relation_size(‘customer‘));

输出:

!image

输出将以 "12 kB" 或 "2 MB" 这样的格式显示大小,使其更容易理解。

示例 3: 查询 "customer" 表的大小

在这里,我们将使用以下命令从 ‘sample dvdrental database‘ 中查询 "film" 表的大小:

****SELECT ****pg_size_pretty (pg_relation_size(‘film‘));

输出:

!image

该命令以人类可读的格式返回 "customer" 表的大小。

示例 4: 查询 "film" 表的大小

在这里,我们将查询 dvdrental 数据库中最大的 10 个表。

****SELECT****
    relname ****AS ****"tables",
    pg_size_pretty (
        pg_total_relation_size (X .oid)
    ) ****AS ****"size"
****FROM****
    pg_class X
****LEFT JOIN**** pg_namespace Y ON (Y.oid = X .relnamespace)
****WHERE****
    nspname ****NOT IN**** (
        ‘pg_catalog‘,
        ‘information_schema‘
    )
****AND ****X .relkind  ‘i‘
****AND ****nspname !~ ‘^pg_toast‘
****ORDER BY
****    pg_total_relation_size (X .oid) ****ASC****
****LIMIT ****10;

输出:

!image

这个查询将列出 dvdrental 数据库中最大的 10 个表,清晰地展示了大部分存储空间的使用位置。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/40360.html
点赞
0.00 平均评分 (0% 分数) - 0