当前位置: 首页 > news >正文

PostgreSQL LSN 详解及转换工具

LSN 是什么

LSN (Log sequence number) ,即日志序列号。每一条 WAL 日志都需要一个编号来标识它,而 LSN 就可以看作是 WAL 日志不断自增的编号。

LSN 格式

我们使用 pg_waldump 打印一段 WAL 日志,LSN 如下图所示。
在这里插入图片描述
PG 的 LSN 是 64 位无符号整数。以上图中的 3D7/40ABA220 为例,将其看作二进制后,/ 左边的为高 32 位,右边的为低 32 位:

  • 高 32 位:3D7
  • 低 32 位:40ABA220

将其拼在一起后(3D740ABA220),对应的十进制为 4223037841952 。

LSN 格式的逻辑含义

对于计算机来说,LSN 只是一个 64 位无符号整数,而对于人来说,我们可以将其分为三部分看,了解其逻辑含义。
其逻辑格式为 XXXXXXXX/YYZZZZZZ ,以上述的 3D7/40ABA220 为例 :

  • XXXXXXX:logid,对应 3D7
  • YY:logseg,段号,对应 40
  • ZZZZZZ:offset,该条 WAL 在对应日志段中的偏移量

logseg 和 logid 其实是进位的关系,因为 YY 对应的段号只有两位,所以当其加到 FF 后又会回到 00,此时 logid 就会 +1。

WAL 文件名

一个 WAL 文件的名字如下图所示:
在这里插入图片描述
timeline 在 LSN 中没有表现,而 logid 和 logseg 都与上述的 LSN 能对应起来(logseg 的前 6 位固定为 0)。

常用转换函数

PG 原生有一些常用的函数用于 LSN 的计算、转换:

  1. 获取当前的 LSN 值
    select pg_current_wal_lsn();
    
  2. 从 LSN 计算出 WAL 文件名(注意:timeline 是根据当前实例生成的,不同实例的 timeline 字段计算结果可能不同)
    select pg_walfile_name('0/157A400');
    
  3. 进制转换,将 LSN 转换成十进制,和将十进制转换成 LSN 格式:
    PG 原生没有现成的函数,可参考该 github。如果无法安装插件的话,直接将 pg_lsn_conversion--1.0.sql 中的创建函数语句复制到实例中执行即可。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [linux 驱动]misc设备驱动详解与实战
  • 【Bean】BeanPostProcessor的前置方法和后置方法的作用和使用
  • clip论文阅读(Learning Transferable Visual Models From Natural Language Supervision)
  • 探索Go语言中的随机数生成、矩阵运算与数独验证
  • 代理IP池纯净度对数据抓取有影响吗?
  • flink on k8s
  • Windows 的 docker 删除容器后 WSL2 磁盘空间不释放的问题
  • MongoDB高可用和分片集群知识
  • 【C++】标准库IO查漏补缺
  • CORS漏洞及其防御措施:保护Web应用免受攻击
  • 看Threejs好玩示例,学习创新与技术(三)
  • `character_set_server` 和 `collation_server`
  • Nuxt Kit 组件管理:注册与自动导入
  • 一. Unity实现虚拟摇杆及屏幕自适应功能
  • GPS/LBS/Wi-Fi定位,全安排!—合宙Air201资产定位模组LuatOS快速入门04
  • Google 是如何开发 Web 框架的
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • Javascript设计模式学习之Observer(观察者)模式
  • linux安装openssl、swoole等扩展的具体步骤
  • Node + FFmpeg 实现Canvas动画导出视频
  • Python实现BT种子转化为磁力链接【实战】
  • Vim 折腾记
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 复杂数据处理
  • 高度不固定时垂直居中
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 排序算法学习笔记
  • 前端知识点整理(待续)
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 怎么把视频里的音乐提取出来
  • 函数计算新功能-----支持C#函数
  • ​ArcGIS Pro 如何批量删除字段
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #07【面试问题整理】嵌入式软件工程师
  • #Java第九次作业--输入输出流和文件操作
  • #数学建模# 线性规划问题的Matlab求解
  • (2022 CVPR) Unbiased Teacher v2
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (八)Flask之app.route装饰器函数的参数
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (规划)24届春招和25届暑假实习路线准备规划
  • (十二)python网络爬虫(理论+实战)——实战:使用BeautfulSoup解析baidu热搜新闻数据
  • (五)activiti-modeler 编辑器初步优化
  • (转) RFS+AutoItLibrary测试web对话框
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .JPG图片,各种压缩率下的文件尺寸
  • .Net - 类的介绍
  • .NET 4.0中的泛型协变和反变
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net操作Excel出错解决