DELETE 操作为何如此困难?

2024-12-01

本文探讨了 PostgreSQL 数据库中 DELETE 操作的复杂性。DELETE 操作并非简单地移除数据,而是标记数据为删除状态,后续由 autovacuum 进程进行清理。文章详细描述了 DELETE 操作的步骤,包括行识别、锁获取、触发器执行、索引更新、WAL 记录等,并解释了这些步骤对性能的影响,尤其是对于大型数据集。文章指出,软删除并非解决方案,而批处理和分区是更有效的策略。批处理可以减少单次事务的影响,分区则允许直接删除整个分区,从而提高效率。文章还强调了 autovacuum 的重要性以及在 DELETE 操作期间进行规划的必要性。

阅读更多
未分类 DELETE

pg_cron 和 pg_timetable:PostgreSQL 中的任务调度工具

2024-06-17

本文介绍了两种 PostgreSQL 任务调度工具:pg_cron 和 pg_timetable。pg_cron 使用类似 cron 的语法,简单易用,适用于单一集群的简单任务,例如维护任务、刷新物化视图和生成定期报告。pg_timetable 提供更强大的功能,支持任务链、复杂的时间间隔和自定义执行时间,适用于需要高级调度、任务依赖关系和跨多集群编排的复杂场景。

阅读更多
未分类 任务调度

PostgREST教程:轻松创建API

2024-06-10

本文是使用PostgREST构建请假管理应用程序的实用指南。PostgREST是一个强大的工具,可以让你利用PostgreSQL的功能,而无需编写大量代码。文章共分三部分:第一部分介绍PostgREST,设置PostgreSQL数据库,并创建用户表;第二部分创建API模式,使用视图和存储过程添加业务逻辑;第三部分介绍如何使用pgcrypto进行身份验证和授权,并使用行级安全性保护数据。

阅读更多
未分类 PostgREST

PG Compactor 和 Squeezer:让 PostgreSQL 变得苗条

2024-04-29

这篇博客文章介绍了 PG Repack 和 PG Squeeze,它们是用于压缩 PostgreSQL 数据库大小的工具。这些工具通过去除冗余数据和优化表结构来实现这一目标,从而可以显着节省存储空间并提高性能。文中提供了有关如何使用这些工具的分步指南,以及一些示例说明了它们如何帮助用户减少数据库大小。

阅读更多