未记录表

一种 WAL 日志记录被禁用以提高写入性能的表类型

未记录表 是一种表类型,写入其中的数据不会被写入 写前日志。与普通表相比,这能显著提高写入速度。

未记录表PostgreSQL 9.1 中引入。

用法

未记录表本质上不具备崩溃安全性,在服务器崩溃或非正常关机后会自动 截断

未记录表的元数据将复制到流复制备用服务器,但在备用服务器上访问该表时将引发 ERROR。如果备用服务器被提升为主服务器,该表将可用。

PostgreSQL 9.5 开始,可以使用 ALTER TABLE 命令将普通表更改为未记录表,反之亦然。

PostgreSQL 15 开始,可以使用未记录序列来配合未记录表。

变更历史

示例

未记录表插入速度与普通表对比

注意:以下示例非常简单,仅用于展示未记录表上的插入比记录表更快,而不是显示特定的速度比例。

postgres=# CREATE UNLOGGED TABLE unlogged_table (id int);
CREATE TABLE

postgres=# CREATE TABLE normal_table (id int);
CREATE TABLE

postgres=# \timing 
Timing is on.

postgres=# INSERT INTO unlogged_table (id) SELECT generate_series(1,10000);
INSERT 0 10000
Time: 7.107 ms

postgres=# INSERT INTO normal_table (id) SELECT generate_series(1,10000);
INSERT 0 10000
Time: 32.574 ms

分类

DDL, 存储

另请参阅

CREATE TABLE, 初始化分叉, 未记录序列

反馈

请将任何关于“未记录表”的评论、建议或更正 在此处提交。