一、问题描述
集团telepg集群反馈他们自己升级OS内核版本后,重启了PG实例导致有部分表数据丢失(只有表结构,没有表数据)
二、分析过程
社区版本使用unlogged table可以达到类似内存表的功能。
unlogged table 的几个特点:
1、unlogged table不记录wal日志,写入速度快,备库无数据,只有结构。
2、当数据库crash后,数据库重启时自动清空unlogged table的数据。
三、解决办法
根据业务数据类型,选择使用合适类型的表
四、总结
1、写性能
unlogged table > 普通表(异步事务) > 普通表(同步事务)
2、资源消耗
unlogged table 不写WAL,IO开销小。
3、适应场景
批量计算的中间结果,频繁变更的会话数据。
4、注意事项
4.1、unlogged table不记录wal日志,写入速度快,备库无数据,只有结构。
4.2、当数据库crash后,数据库重启时自动清空unlogged table的数据。
4.3、正常关闭数据库,再启动时,unlogged table有数据。