用法
非日志表本质上不是崩溃安全的,在服务器崩溃或不干净关闭后将被自动截断。
非日志表的元数据将被复制到流式复制备用服务器,但在任何尝试访问备用服务器上的表时,将引发ERROR
。如果备用服务器被提升为主服务器,则该表将可供使用。
从PostgreSQL 9.5 开始,可以使用ALTER TABLE
将普通表更改为非日志表,反之亦然。
从 PostgreSQL 15 开始,可以使用非日志表使用非日志序列。
变更历史
- PostgreSQL 9.5
- 表可以更改为日志/非日志状态,方法是使用
ALTER TABLE
(f41872d0)
- 表可以更改为日志/非日志状态,方法是使用
- PostgreSQL 9.1
- 添加(提交 53dbc27c)
示例
非日志表插入速度与普通表比较
注意:以下示例非常简单,仅用于说明非日志表上的插入速度比日志表快,但不是为了显示特定的速度比率。
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
参考
- PostgreSQL 文档: CREATE TABLE
有用链接
- PostgreSQL 非日志表 - 看,没有 WAL! - Greg Sabino Mullane / Crunchy Data 于 2023 年 2 月撰写的博客文章
- PostgreSQL 9.1 中的非日志表性能 - Michael Paquier 于 2011 年 10 月撰写的博客文章
另请参阅
CREATE TABLE,初始化分叉,非日志序列