PostgreSQL 存储优化、事务管理与索引使用全解析
1. 存储优化与清理
在 PostgreSQL 中,在保证操作安全的前提下,减少 VACUUM 负载是个不错的做法。因为对大表执行 VACUUM 操作成本较高,所以关注相关设置很有必要。
- VACUUM FULL 的使用 :除了普通的 VACUUM,还可以使用 VACUUM FULL。但需要注意的是,VACUUM FULL 会锁定表并重写整个关系。对于小表而言,这可能不是问题;但对于大表,表锁定可能会在短时间内造成严重影响,它会阻止后续写入操作,可能让访问数据库的人误以为数据库已崩溃,因此使用时需格外谨慎。若想避免使用 VACUUM FULL,可考虑使用 pg_squeeze(https://www.cybertec-postgresql.com/en/introducing-pg_squeeze-a-postgresql-extension-to-auto-rebuild-bloated-tables/),它能在不阻塞写入的情况下重写表。
- 观察 VACUUM 的工作过程 :为了更好地理解 VACUUM 的作用,下面通过一个示例来展示。首先创建一个带有自定义自动清理设置的小表,并插入 100000 行数据:
CREATE TABLE t_test (id int) WITH (autovacuum_enabled = off);
INSERT INTO t_test
SELECT * FROM generate_series(1, 100000
超级会员免费看
订阅专栏 解锁全文
2788

被折叠的 条评论
为什么被折叠?



