Skip to content

unlogged table

介绍

在写数据的时候不记录wal的表。

在意外发生时表中的数据被trunce 。如断电、 主进程kill 、scrash 等。

正常关闭重启数据库时数据不会丢失。

优点: 提高写入效率

不足: 数据安全性不能得到保障。 由于没有wal 流复制从库不能同步

应用场景:

数据可丢失,如频繁更新,只保留最后状态信息的表。

导入表数据,后将表改为正常表。

使用
-- 创建unlogged table,与创建普通的表类似。加个unlogged 关键字
postgres=# create unlogged table ult (id int,name text);
CREATE TABLE
postgres=# \d+ ult 
                      不记录日志的表 "public.ult"
 栏位 |  类型   | 校对规则 | 可空的 | 预设 |   存储   | 统计目标 | 描述 
------+---------+----------+--------+------+----------+----------+------
 id   | integer |          |        |      | plain    |          | 
 name | text    |          |        |      | extended |          | 


-- 将普通表与unlogged table 之间转换
postgres=# alter table ult set logged ;
ALTER TABLE
postgres=# \d+ ult 
                          数据表 "public.ult"
 栏位 |  类型   | 校对规则 | 可空的 | 预设 |   存储   | 统计目标 | 描述 
------+---------+----------+--------+------+----------+----------+------
 id   | integer |          |        |      | plain    |          | 
 name | text    |          |        |      | extended |          | 

postgres=# alter table ult set unlogged ;
ALTER TABLE
postgres=# \d+ ult 
                      不记录日志的表 "public.ult"
 栏位 |  类型   | 校对规则 | 可空的 | 预设 |   存储   | 统计目标 | 描述 
------+---------+----------+--------+------+----------+----------+------
 id   | integer |          |        |      | plain    |          | 
 name | text    |          |        |      | extended |          |