PostgreSQL unlog表

文章探讨了PostgreSQL中的unlogged表特性,它不生成WAL日志,从而提高更新速度和减少磁盘空间,但牺牲了数据持久性和对复制、备份的支持。在故障恢复时,unlogged表的数据可能会丢失。实验显示,unlogged表在性能上有显著提升,但在数据安全性方面存在风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Postgresql中的unlogged表是一种通过向create table命令添加unlogged关键字来防止特定表生成WAL(预写日志)信息的方法:

CREATE UNLOGGED TABLE testtable  (id int);

将现有表更改为未标记表,然后再次切换回:

ALTER TABLE t1  SET UNLOGGED;   
ALTER TABLE t1  SET LOGGED;  

使用UNLOGGED表有以下好处:

  • wal日志量变少,省去重做日志文件,节省了一定的空间,同时减少备份wal的工作量。

  • vacuum影响减少,因为vacuum动作也会被wal日志写入

  • 并行创建大型表性能得到提升。

使用UNLOGGED表的缺点:

  • 故障恢复时会截断表。

  • 使用UNLOGGED的表只能在主服务器上访问,而不能在副本上访问。

  • 使用UNLOGGED的表不能用于逻辑复制或物理备份。

接下来验证测试Postgres中unlogged的表不会生成WAL,且更新速度更快。

首先,使用pgbench实用程序创建一个测试表,然后对其进行一些更新。我们不仅会看到更新需要多长时间,还会查看pg_wal目录内部,并查看创建了多少wal。对于这个测试,重要的是关闭auto vacuum,并且保证实例没有其他客户端连接。

# Ensure that a
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值