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

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

知道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.kler.cn/a/468230.html

相关文章:

  • 前端学习DAY31(子元素溢出父元素)
  • 78、使用爱芯派2_AX630C开发板 3.2T高有效算力 低功耗 支持AI-ISP真黑光实验
  • 后台运行 Python
  • Linux运维相关基础知识(二)
  • JVM学习:CMS和G1收集器浅析
  • python多张图片生成/合成gif
  • lua库介绍:数据处理与操作工具库 - leo
  • k8s 镜像拉取策略
  • 计算机组成原理——控制单元设计
  • 青少年编程与数学 02-005 移动Web编程基础 13课题、本地存储
  • 洛谷:P1540 [NOIP2010 提高组] 机器翻译
  • Sqoop其二,Job任务、增量导入、Hdfs导入、龙目
  • 【Unity3D】遮挡剔除 Occlusion
  • linux安装redis及Python操作redis
  • 嵌入式linux系统中CMake的基本用法
  • C# OpenCV机器视觉:霍夫变换
  • 社群团购平台的运营模式革新:以开源AI智能名片链动2+1模式商城小程序为例
  • HTML——74. 表单实战
  • 算法练习——分治_快排
  • 在k8s中部署Elasticsearch高可用集群详细教程
  • 《塑战核心》V1.0.0.9952官方中文版
  • Linux -前端需要了解的Linux 常见命令
  • ROS2 中的工作空间和功能包
  • Spring Cloud Gateway-自定义异常处理
  • 配置QoS
  • 发现API安全风险,F5随时随地保障应用和API安全