WAL日志的命名规则深度解析(二)
来源:互联网 发布:北京壁虎网络 编辑:程序博客网 时间:2024/06/05 05:12
上一次说到WAL日志的命名规则,但是在实际的数据库环境中,我们还会经常遇到WAL日志的另一种命名格式:
highgo=# select pg_current_xlog_location(); pg_current_xlog_location -------------------------- 1/A301EEE0(1 行记录)
这里表示的同为WAL日志文件的位置LSN(Log Sequence Number)
此处的文件格式和时间线相关的“历史文件”中文件命名格式相同(参考源码函数:src\backend\access\transam\timeline.c)
除此之外,函数pg_current_xlog_location、pg_current_xlog_insert_locatione及pg_start_backup返回的格式也都是两个十六进制的数字中间用斜杠“/”分隔表示WAL日志位置。
logId就是“1/A301EEE0”中的第一个数字,即1
logSeg就是“0/A301EEE0”中的第二个数字除以16M的大小,即A301EEE0除以16M,而16M相当于2的24次方,相当于十六进制数“A301EEE0”右移6位(32-24),即“A301EEE0”中的最高两位“A3” 。
那么根据WAL文件的格式timeline+logId+logSeg,则相当于:“00000001”+“00000001”+“000000A3”,即为:“0000000100000000000000A3” 写的位置是在文件“0000000100000001000000A3”中的偏移量是多少呢?实际上是在“1/A301EEE0”中第二个数字“12B00B48”后六位“01EEE0”,换算成十进制为“126688”。
当然PostgreSQL已准备了函数pg_xlogfile_name_offset帮我们做以上的转换。
binary 二进制的octal 八进制的hexadecimal 十六进制的decimal 十进制的
BY 海无涯
- WAL日志的命名规则深度解析(二)
- WAL日志的命名规则深度解析(一)
- 交叉编译知识解析(二) —— 交叉编译器的名字的命名规则
- PHP命名空间的名称解析规则
- 二、简单的Windows应用程序命名规则
- 预写式日志(Write-Ahead Logging (WAL))
- C#命名规则(一个程序员的C#命名规则 )
- HashMap深度解析(二)
- 写wal log日志
- PHP命名空间解析规则
- 二十一、Linux系统编程-管道(二)命名管道(FIFO)、匿名管道与命名管道区别、命名管道的打开规则
- PHP命名空间解析规则(告别PHP namespace给你带来的纠结)
- 核二数据库命名规则
- postgresql减少wal日志生成量的方法
- postgresql减少wal日志生成量的方法
- 交叉编译学习笔记(二)——交叉编译器的命名规则
- 解析Crash日志(二)
- HBase WAL 解析
- 12-12作业
- Linux
- 以太坊开发文档10
- leetCode#141. Linked List Cycle
- 指针函数和函数指针
- WAL日志的命名规则深度解析(二)
- 修改密码-测试用例设计
- localStorage使用小结
- JavaScript window、location对象基础知识整理
- CollectionUtils工具类的使用
- Android 导入第三方jar时 出现ClassNotFoundException
- 《Text Mining and Analytics》学习笔记——第一周
- 1.1java介绍
- Filter 拦截器