Postgresql中的unlogged table

news2025/1/16 18:46:15

在PG中,有一种表的类型为unlogged table,名如其字,该种类型的表不会写入wal日志中,所以在写入的速度上比普通的堆表快很多,但是该表在数据库崩溃的时候,会被truncate,数据会丢失,而且该表也不支持流复制,所以在standby节点是无法查到该表数据的。在该表上创建的索引也是unlogged索引。最近看到一篇博客描述了unlogged table的一些优缺点。我这里也再次解读一下,留下一些自己的见解。

建表语句如下:

create unlogged table unlogged_table (a int primary key);
CREATE TABLE
insert into unlogged_table select generate_series(1,1000000);
INSERT 0 1000000

unlogged表和logged表可以互相转换,如下例子:

#接上面例子,主键索引也是unlogged
postgres=# \di+ unlogged_table_pkey 
                                          List of relations
 Schema |        Name         | Type  |  Owner   |     Table      | Persistence | Size  | Description 
--------+---------------------+-------+----------+----------------+-------------+-------+-------------
 public | unlogged_table_pkey | index | postgres | unlogged_table | unlogged    | 21 MB | 
(1 row)

#查看表物理存放路径
postgres=# select pg_relation_filepath('unlogged_table');
 pg_relation_filepath 
----------------------
 base/13580/43099
(1 row)

#转为logged表,物理文件路径已变更,说明表重建了,而且索引也重建了
postgres=# alter table unlogged_table set logged;
ALTER TABLE
postgres=# select pg_relation_filepath('unlogged_table');
 pg_relation_filepath 
----------------------
 base/13580/43104
(1 row)

postgres=# \di+ unlogged_table_pkey
                                          List of relations
 Schema |        Name         | Type  |  Owner   |     Table      | Persistence | Size  | Description 
--------+---------------------+-------+----------+----------------+-------------+-------+-------------
 public | unlogged_table_pkey | index | postgres | unlogged_table | permanent   | 21 MB | 
(1 row)

#转换回unlogged表,物理文件变化了,可见表和索引还是重建了
postgres=# alter table unlogged_table set unlogged;
ALTER TABLE
postgres=# select pg_relation_filepath('unlogged_table');
 pg_relation_filepath 
----------------------
 base/13580/43108
(1 row)

postgres=# select pg_relation_filepath('unlogged_table_pkey');
 pg_relation_filepath 
----------------------
 base/13580/43111
(1 row)

由以上实验得出,在互相转换的时候一定要注意,在表转换的时候是无法被操作的。如果表很大,那么也会额外占用资源。因为要重建表和索引。另外注意一点,从logged转为unlogged会相对好一些,因为不写wal日志,只写表数据。

unlogged表的优缺点:

  1. 在实例奔溃后,unlogged表数据会被truncate,也就是会丢失数据
  2. unlogged表只能在主节点访问,备节点无法访问
  3. unlogged表不支持物理复制,也不支持逻辑复制

在这里插入图片描述
解释一下上图:

  1. 由于unlogged表不写wal,所以dml的效率更高,比如insert ,update会更快。
  2. vacuum的影响也更小,因为unlogged表不需要写wal,vacuum的效率也会提升,正常表的vacuum会写wal。
  3. 因为不写wal,所以在备份的时候不会备份unlogged表,备份集会更小。
  4. 普通表,也就是logged表,不会因为数据库崩溃而截断表,丢失所有数据,物理复制和逻辑复制都可用。

总结:

  1. 一般情况下我们是不需要使用unlogged表的,因为不能保证数据的持久性,这对于数据库来说是致命的。
  2. 正常的关闭数据库,或者正常的重启数据库,unlogged表的数据不会丢失,只有在不干净的关闭数据库,比如断电,或者因为其他原因数据库crash了,那么unlogged表的数据会被截断,用一个空的xxxx_init表文件代替。
  3. unlogged表也是要写物理文件的,只是不写wal日志,所以不是内存表,不要以为unlogged表都是在内存中操作的。
  4. unlogged表在生产环境建议不要使用,测试环境可以把玩一下。

参考:
https://www.crunchydata.com/blog/postgresl-unlogged-tables
https://pganalyze.com/blog/5mins-postgres-unlogged-tables

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/378879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Leetcode21. 合并两个有序链表

一、题目描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4]输出:[1,1,2,3,4,4] 示例 2: 输入:l1 [], l2…

Java程序开发中如何使用lntelliJ IDEA?

完成了IDEA的安装与启动,下面使用IDEA创建一个Java程序,实现在控制台上打印HelloWorld!的功能,具体步骤如下。 1.创建Java项目 进入New Project界面后,单击New Project选项按钮创建新项目,弹出New Project对话框&…

【k8s】Kubernetes的学习(1.k8s概念和架构)

目录 1.首先要知道,Kubernetes为什么简称为k8s? 2.Kubernetes概述 2.1 kubernetes基本介绍 2.2 kubernetes的特性 2.3 kubernetes集群架构组件 2.3.1 Master (主控节点) 2.3.2 node (工作节点) 2.4 k8s核心概念 2.4.1 Pod 2.4.2 controller 2.4.3 Se…

操作系统权限提升(十九)之Linux提权-SUID提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 SUID提权 SUID介绍 SUID是一种特殊权限,设置了suid的程序文件,在用户执行该程序时,用户的权限是该程序文件属主的权限,例如程序文件的属主是root,那么执行该…

redux-saga

redux-saga 官网:About | Redux-Saga 中文网:自述 Redux-Saga redux-saga 是一个用于管理 异步获取数据(副作用) 的redux中间件;它的目标是让副作用管理更容易,执行更高效,测试更简单,处理故障时更容易… …

C#:Krypton控件使用方法详解(第十讲) ——kryptonColorButton

今天介绍的Krypton控件中的kryptonColorButton,下面介绍这个控件的外观属性:Cursor属性:表示鼠标移动过该控件的时候,鼠标显示的形状。属性值如下图所示:EmptyBorderColor属性:表示当所选颜色为空时&#x…

七、JUC并发工具

文章目录JUC并发工具CountDownLatch应用&源码分析CountDownLatch介绍CountDownLatch应用CountDownLatch源码分析有参构造await方法countDown方法CyclicBarrier应用&源码分析CyclicBarrier介绍CyclicBarrier应用CyclicBarrier源码分析CyclicBarrier的核心属性CyclicBarr…

echarts实现知识图谱,生产项目

echarts实现知识图谱,生产项目内容简介效果演示代码逻辑结束语内容简介 在实际生产项目中,需要对后端知识数据进行展示。需求如下: 点击节点可以展示与此节点相关的节点信息右键点击节点可以对节点的信息进行修改悬浮在节点上可以查看节点的…

通用人工智能(AGI):人工智能的下一个阶段

除了人工智能(AI)的改进和新应用之外,大多数人都认为,当通用人工智能(AGI)出现时,人工智能的下一次飞跃将发生。我们将AGI宽泛地定义为机器或计算机程序理解或学习人类可以完成的任何智力任务的假设能力。然而,对于何时以及如何实…

系统性能测试指标

性能测试的目的 1.评估系统的能力,测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。 2.识别体系中的弱点:受控的负荷可以被增加到一个极端的水平,并突破它,从而修复体系的瓶颈或薄…

leetcode: Swapping Nodes in a Linked List

leetcode: Swapping Nodes in a Linked List1. 题目描述2. 题目解答3. 总结1. 题目描述 You are given the head of a linked list, and an integer k.Return the head of the linked list after swapping the values of the kth node from the beginning and the kth node f…

ECMAScript 详解

ECMAScript 历史我们首先来看 ECMA 是什么。ECMA,是欧洲计算机制造商协会(European Computer Manufacturers Association)的简称,是一家国际性会员制度的信息和电信标准组织。1994 年之后,由于组织的标准牵涉到很多其他…

【Leetcode 剑指Offer】第 6 天 搜索与回溯算法(简单)

搜索与回溯剑指 Offer 32 - I. 从上到下打印二叉树层序遍历 广搜 BFScollections双端队列 deque剑指 Offer 32 - II. 从上到下打印二叉树 II剑指 Offer 32 - III. 从上到下打印二叉树 III剑指 Offer 32 - I. 从上到下打印二叉树 题;从上到下打印出二叉树的每个节点&#xff0c…

单通道说话人语音分离——DPRNN(Dual-Path Recurrent Neural Network)

参考文献:《DUAL-PATH RNN: EFFICIENT LONG SEQUENCE MODELING FOR TIME-DOMAIN SINGLE-CHANNEL SPEECH SEPARATION》 DPRNN网络是Con-Tasnet的改进网络 Con-Tasnet介绍详情请看上一篇文章 单通道说话人语音分离——Conv-TasNet(Convolutional Time-domain audio…

应用程序性能优化方案,web服务五级缓存优化,服务器性能优化...

winfrom 全局异常捕获WPF 全局异常捕获Asp.Net全局异常捕获MVC 全局异常捕获AspNetNetCore 全局异常捕获一级缓存html/css/js 前端缓存二级缓存Asp.Net MVC AspNetCore 客户端缓存设置三级缓存服务端缓存四级redis 数据库缓存服务端缓存五级sqlserver 数据库缓存设置分布式缓存…

2023年湖北建设厅资料员证怎么考需要什么条件?启程别

2023年湖北建设厅资料员证怎么考需要什么条件?启程别 湖北资料员目前已经开始组织考试了,各位想要考资料员的现在可以开始准备报考相关准备工作了。资料员怎么考需要什么条件?启程别告诉你 建设厅资料员证怎么考 网报:七大员全国…

ARM学习(十八)jinkozone调试问题总结

笔者来聊聊ARM的函数的调用规则 1、ARM函数调用规则介绍首先介绍几个术语, AAPCS:Procedure Call Standard for the ARM Architecture APCS:ARM Procedure Call Standard TPCS:Thumb Procedure Call Standard ATPCS:AR…

5.3 redis分布式锁【Java 面试第三季】

redis分布式锁【Java 面试第三季】前言推荐redis分布式锁概览47_redis分布式锁前情说明48_boot整合redis搭建超卖程序-上49_boot整合redis搭建超卖程序-下50_redis分布式锁0151_redis分布式锁0252_redis分布式锁0353_redis分布式锁0454_redis分布式锁0555_redis分布式锁0656_re…

【Java|golang】2363. 合并相似的物品---桶排序

给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,weighti 表示第 i 件物品的 重量 。 items 中每件物品的价值都是 唯一的 。 请你…

报名投票链接怎么做做一个投票的链接怎么做微信投票链接怎么做

近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…