LSN 外部表示

Fab*_*uis 6 postgresql

根据postgres文档,LSN是一个64位整数,表示预写日志流中的字节位置。它被打印为两个十六进制数字,每个数字最多 8 位,用斜杠分隔;例如,16/B374D848。有谁知道这2个十六进制数的含义是什么?

Lau*_*lbe 7

左用零填充斜杠右侧的部分,然后删除斜杠,您将获得文档中描述的以字节为单位的偏移量。

  • 那么将 `restart_lsn = "16/374D848"` 转换为 `int` 的 python 代码将是 `int("".join(map(lambda x: x.zfill(8), restart_lsn.split('/')) ),base=16)`,等于 94547269704。谢谢劳伦兹! (2认同)

vla*_*ich 7

pg_lsntype 支持-操作并返回字节偏移量,因此这里是从 pg_lsn 转换为 bigint 的最简单方法:

SELECT pg_current_wal_lsn() - '0/0'
Run Code Online (Sandbox Code Playgroud)