Postgresql中clog与xid对应关系计算方法(速查表)

news2025/1/7 10:14:54

知道xid计算clog文件名

CREATE or REPLACE PROCEDURE get_clog_name(xid bigint) as
$$ 
DECLARE
    pageno bigint;
    segno bigint;
BEGIN
    -- 页面号:一个页面8K,一个字节8位能存4个事务的状态。
    pageno := xid / (8192 * 4);
    -- 段号:一个段(CLOG文件)256KB,能存32个8K页面。
    segno := pageno / 32;
    -- 段号的十六进制就是文件号。
    RAISE NOTICE 'xid:[%], pageno:[%], segno:[%], filename:[%]', xid, pageno, segno, to_hex(segno);
END $$ language plpgsql;

执行结果

call postgres=# call get_clog_name(4210000000);
NOTICE:  xid:[4210000000], pageno:[128479], segno:[4014], filename:[fae]

文件名为0FAE

知道clog文件名想计算xid范围

CREATE OR REPLACE PROCEDURE get_xid_range(clog_name TEXT) AS
$proc$
DECLARE
    file_number BIGINT; 
    start_xid BIGINT;
    end_xid BIGINT;
BEGIN
    execute 'select x''' || clog_name || '''::int' into file_number;
    raise notice '%',file_number;
    start_xid := file_number * 1048576;
    end_xid := (file_number + 1) * 1048576 - 1;
    raise notice 'XID Range: % to %' , start_xid,  end_xid;
END;
$proc$ LANGUAGE plpgsql;

使用

postgres=# call get_xid_range('0003');
NOTICE:  3
NOTICE:  XID Range: 3145728 to 4194303
CALL

-- 验证范围对不对?
postgres=# call get_clog_name(3145727);
NOTICE:  xid:[3145727], pageno:[95], segno:[2], filename:[2]
CALL
postgres=# call get_clog_name(3145728);
NOTICE:  xid:[3145728], pageno:[96], segno:[3], filename:[3]
CALL
postgres=# call get_clog_name(4194303);
NOTICE:  xid:[4194303], pageno:[127], segno:[3], filename:[3]
CALL
postgres=# call get_clog_name(4194304);
NOTICE:  xid:[4194304], pageno:[128], segno:[4], filename:[4]
CALL

clog与xid对应关系速查表

uint32 xid的单位是0 - 4294967295,42亿左右。

filenamestartend
001048575
110485762097151
220971523145727
331457284194303
441943045242879
552428806291455
662914567340031
773400328388607
883886089437183
9943718410485759
A1048576011534335
B1153433612582911
C1258291213631487
D1363148814680063
E1468006415728639
F1572864016777215
101677721617825791


filenamestartend
F0251658240252706815
F1252706816253755391
F2253755392254803967
F3254803968255852543
F4255852544256901119
F5256901120257949695
F6257949696258998271
F7258998272260046847
F8260046848261095423
F9261095424262143999
FA262144000263192575
FB263192576264241151
FC264241152265289727
FD265289728266338303
FE266338304267386879
FF267386880268435455
100268435456269484031
101269484032270532607
102270532608271581183
103271581184272629759
104272629760273678335
105273678336274726911
106274726912275775487
107275775488276824063
108276824064277872639
109277872640278921215
10A278921216279969791


filenamestartend
FF042781900804279238655
FF142792386564280287231
FF242802872324281335807
FF342813358084282384383
FF442823843844283432959
FF542834329604284481535
FF642844815364285530111
FF742855301124286578687
FF842865786884287627263
FF942876272644288675839
FFA42886758404289724415
FFB42897244164290772991
FFC42907729924291821567
FFD42918215684292870143
FFE42928701444293918719
FFF42939187204294967295
100042949672964296015871
100142960158724297064447
100242970644484298113023
100342981130244299161599
100442991616004300210175
100543002101764301258751
100643012587524302307327
100743023073284303355903
100843033559044304404479
100943044044804305453055
100A43054530564306501631
100B43065016324307550207
100C43075502084308598783
100D43085987844309647359
100E43096473604310695935
100F43106959364311744511
101043117445124312793087

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

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

相关文章

24年无人机行业资讯 | 12.23-12.29

24年无人机行业资讯 | 12.23-12.29 1、 国家发改委新设低空经济司,助力低空经济规范发展2、商务部支持无人机民用国际贸易,强调出口管制与安全并重3、滨州高新区首架无人机成功下线4、 2025第九届世界无人机大会筹备推进会顺利召开5、2024年世界无人机竞…

前端实现大文件上传(文件分片、文件hash、并发上传、断点续传、进度监控和错误处理,含nodejs)

大文件分片上传是前端一种常见的技术,用于提高大文件上传的效率和可靠性。主要原理和步骤如下 文件分片 确定分片大小:确定合适的分片大小。通常分片大小在 1MB 到 5MB 之间使用 Blob.slice 方法:将文件分割成多个分片。每个分片可以使用 Bl…

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild,源代码下载到src下,解压,进入,编译安装。编译时指定--prefix到相同的目录,即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…

bytetrack 解决跟踪后框晃动的问题

使用距离最近的匹配的检测框 替代 bytetrack返回的跟踪框 作为最终的返回结果 完整byte_tracker.py代码为: import numpy as np from collections import deque import os import os.path as osp import copy import torch import torch.nn.functional as Ffrom …

如何使用OBS Studio录制屏幕?

可以进入官网或github进行下载: https://obsproject.com/download 安装包解压后进入bin 进入64-bit 选择obs 64 进入OBS Studio后在来源内右键,选择添加 选择添加显示器采集即可录取整个屏幕,窗口采集可选择窗口进行录制 选择对应显示器即配置…

ArcGIS Server 10.2授权文件过期处理

新的一年,arcgis server授权过期了,服务发不不了。查看ecp授权文件,原来的授权日期就到2024.12.31日。好吧,这里直接给出处理方法。 ArcGIS 10.2安装时,有的破解文件中会有含一个这样的注册程序,没有的话&…

循环冗余校验CRC的介绍

一、简介 循环冗余校验CRC(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码。该校验方法中,使用多项式出发(模2除法)运算后的余数为校验字段。CRC只能实现检错,不能实现纠错,使…

消息中间件类型都有哪些

在消息中间件的专业术语中,我们可以根据其特性和使用场景将其划分为几种主要的类型。这些类型不仅反映了它们各自的技术特点,还决定了它们在不同应用场景下的适用性。 1. 点对点(Point-to-Point)消息中间件: • 这类中…

微信小程序中 “页面” 和 “非页面” 的区别

微信小程序中 “页面” 和 “非页面” 的区别,并用表格进行对比。 核心概念: 页面 (Page): 页面是微信小程序中用户可以直接交互的视图层,也是小程序的基本组成部分。每个页面都有自己的 WXML 结构、WXSS 样式和 JavaScript 逻辑…

卸载wps后word图标没有变成白纸恢复

这几天下载了个wps教育版,后头用完了删了 用习惯的2019图标 给兄弟我干没了??? 其他老哥说什么卸载关联重新下 ,而且还要什么撤销保存原来的备份什么,兄弟也是不得不怂了 后头就发现了这个半宝藏博主&…

SQL Server导出和导入可选的数据库表和数据,以sql脚本形式

一、导出 1. 打开SQL Server Management Studio,在需要导出表的数据库上单击右键 → 任务 → 生成脚本 2. 在生成脚本的窗口中单击进入下一步 3. 如果只需要导出部分表,则选择第二项**“选择具体的数据库对象(Select specific database objects)”**&am…

基于SpringBoot在线竞拍平台系统功能实现十五

一、前言介绍: 1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及,竞拍系统作为一种新型的在线交易方式,已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间,从组织拍卖、宣传、报名、竞拍到成…

Android Camera压力测试工具

背景描述: 随着系统的复杂化和业务的积累,日常的功能性测试已不足以满足我们对Android Camera相机系统的测试需求。为了确保Android Camera系统在高负载和多任务情况下的稳定性和性能优化,需要对Android Camera应用进行全面的压测。 对于压…

配置嵌入式服务器

一、如何定制和修改Servlet容器的相关配置 修改和server有关的配置(ServerProperties) server.port8081 server.context‐path/tx server.tomcat.uri-encodingUTF-8二、注册servlet三个组件【Servlet、Filter、Listener】 由于SpringBoot默认是以jar包…

GPIO、RCC库函数

void GPIO_DeInit(GPIO_TypeDef* GPIOx); void GPIO_AFIODeInit(void); void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); void GPIO_StructInit(GPIO_InitTypeDef* GPIO_InitStruct); //输出 读 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx,…

3D高斯点云CUDA版本数据制作与demo运行

0. 简介 关于UCloud(优刻得)旗下的compshare算力共享平台 UCloud(优刻得)是中国知名的中立云计算服务商,科创板上市,中国云计算第一股。 Compshare GPU算力平台隶属于UCloud,专注于提供高性价4090算力资源,配备独立IP,…

框架模块说明 #09 日志模块_01

背景 日志模块是系统的重要组成部分,主要负责记录系统运行状态和定位错误问题的功能。通常,日志分为系统日志、操作日志和安全日志三类。虽然分布式数据平台是当前微服务架构中的重要部分,但本文的重点并不在此,而是聚焦于自定义…

conda指定路径安装虚拟python环境

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…

aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)

aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容: 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包,如果不提前准备好这些python的…

driftingblues6靶场攻略

首先 打开kali,扫描主机 地址是192.168.111.143 访问网站 主页源码看一看,没啥用 老套路, 用nmap扫描一下开放端口 用dirsearch扫描一下目录 如果说扫描不到,那就可能是字典不行,换工具就完了 nmap -sV 192.168.…