问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PostgreSQL 16:用pg_size_pretty提升DBA效率

创作时间:
作者:
@小白创作中心

PostgreSQL 16:用pg_size_pretty提升DBA效率

引用
亚马逊官方网站
9
来源
1.
https://aws.amazon.com/blogs/database/synopsis-of-several-compelling-features-in-postgresql-16/
2.
https://blog.csdn.net/jerome_peng/article/details/137423643
3.
http://www.postgres.cn/v2/release/v/64
4.
https://neon.tech/postgresql/postgresql-administration/postgresql-database-indexes-table-size
5.
https://www.geeksforgeeks.org/postgresql-size-of-a-table/
6.
https://www.cnblogs.com/wy123/p/18508099
7.
https://tembo.io/blog/optimizing-memory-usage/
8.
https://www.postgresql.org/docs/current/using-explain.html
9.
https://www.geeksforgeeks.org/postgresql-size-of-a-database/

2024年5月,PostgreSQL全球开发组正式发布了PostgreSQL 16,这是PostgreSQL数据库管理系统的一个重要版本更新。作为世界上最先进的开源关系型数据库之一,PostgreSQL 16带来了多项新特性和性能优化,特别在数据库管理(DBA)效率方面进行了显著改进。

01

PostgreSQL 16的重要新特性

PostgreSQL 16在多个方面进行了优化和增强,主要包括:

  1. 并行VACUUM:现在VACUUM操作可以并行执行,显著提高了处理大量数据时的效率。这对于大型数据库的维护尤为重要。

  2. pg_dump的改进:新增了--binary-upgrade选项,支持二进制升级模式,可以更快速地完成数据库的升级工作。

  3. pg_basebackup的增强:现在支持并行压缩,可以更快地完成备份工作,同时减少了对生产环境的影响。

  4. pg_checksums的性能提升:在创建校验和时,性能提升了约2倍,这在大规模数据库中尤为明显。

  5. pg_verify_checksums的引入:这是一个新的工具,用于验证数据文件的校验和,有助于确保数据的完整性和一致性。

这些新特性不仅提升了数据库的整体性能,更为DBA提供了更强大的工具集,使他们能够更高效地完成日常管理任务。

02

pg_size_pretty函数的使用方法

在PostgreSQL 16中,pg_size_pretty函数得到了进一步优化,成为DBA日常工作中不可或缺的工具之一。这个函数的主要作用是将字节表示的大小转换为更易读的格式,如KB、MB、GB等。虽然功能看似简单,但在实际工作中却能显著提升效率。

基本用法

pg_size_pretty函数通常与pg_relation_sizepg_total_relation_size函数结合使用,以获取表或索引的大小信息。以下是一些基本示例:

SELECT pg_size_pretty(pg_relation_size('my_table'));

这条SQL语句将返回my_table表的大小,结果将以人类可读的格式显示,例如123 MB

如果需要获取表及其索引的总大小,可以使用pg_total_relation_size

SELECT pg_size_pretty(pg_total_relation_size('my_table'));

实用示例

在实际工作中,DBA经常需要查看数据库中所有表的大小,以进行空间管理和优化。以下是一个实用的查询示例:

SELECT
    relname AS "relation",
    pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
FROM
    pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
    nspname NOT IN ('pg_catalog', 'information_schema')
    AND C.relkind <> 'i'
    AND nspname !~ '^pg_toast'
ORDER BY
    pg_total_relation_size(C.oid) DESC
LIMIT 10;

这个查询将返回当前数据库中最大的10个表及其大小,结果如下:

relation  | total_size
------------+------------
 rental     | 2352 kB
 payment    | 1816 kB
 film       | 936 kB
 film_actor | 488 kB
 inventory  | 440 kB
(5 rows)

通过这种方式,DBA可以快速识别出占用空间较大的表,从而有针对性地进行优化。

03

实际应用场景

在实际工作中,pg_size_pretty函数的应用场景非常广泛。以下是一些典型场景:

  1. 空间管理:DBA需要定期检查数据库的空间使用情况,以确保有足够的存储资源。通过pg_size_pretty,可以快速获取各个表和索引的大小,从而做出合理的资源规划。

  2. 性能优化:了解表的大小对于性能优化至关重要。例如,对于非常大的表,可能需要考虑分区策略或优化查询语句。pg_size_pretty可以帮助DBA快速识别出需要优化的对象。

  3. 容量规划:在进行数据库扩容或迁移时,准确了解数据量是非常重要的。通过pg_size_pretty,可以轻松获取数据库的整体大小,为容量规划提供依据。

  4. 数据归档:对于历史数据的归档工作,了解表的大小有助于制定合理的归档策略。pg_size_pretty可以提供清晰的数据量信息,帮助DBA做出决策。

04

与其他工具的对比

与其他数据库管理工具相比,pg_size_pretty具有以下优势:

  1. 集成性:作为PostgreSQL内置函数,无需额外安装任何插件或工具,使用方便。

  2. 准确性:直接从数据库内部获取数据,结果准确可靠。

  3. 易用性:结合SQL查询使用,可以灵活地获取所需信息,适用于各种复杂场景。

  4. 性能:执行效率高,不会对数据库性能造成显著影响。

  5. 成本:作为开源工具,无需额外付费,降低了数据库管理的成本。

随着PostgreSQL 16的发布,pg_size_pretty函数得到了进一步优化,不仅提升了输出格式的美观性,还增强了与其他新特性的协同效果。对于DBA来说,这个函数已经成为日常工作中不可或缺的工具之一,极大地提升了数据库管理的效率和便捷性。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号