首页 > 数据库 >PostgreSQL技术大讲堂 - 第22讲:CLOG作用与管理

PostgreSQL技术大讲堂 - 第22讲:CLOG作用与管理

时间:2023-07-14 17:25:31浏览次数:42  
标签:文件 事务 CLOG PostgreSQL 22 状态 pg

 

PostgreSQL从小白到专家,是从入门逐渐能力提升的一个系列教程,内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容,希望对热爱PG、学习PG的同学们有帮助,欢迎持续关注CUUG PG技术大讲堂。

第22讲:CLOG作用与管理

内容1: PostgreSQL CLOG概述

内容2: CLOG作用与管理

内容3: 诊断当前用到的CLOG块

内容4: 删除不需要的CLOG文件

 

CLOG概述

CLOG用来记录事务号的状态,主要是用来判断行的可见性。每个事务状态占用两个bit位。事务的状态有4种:IN PROGRESS,COMMITTED,ABORTED和SUB_COMMITTED。CLOG由一个或多个8KB页组成。CLOG在逻辑上形成一个数组,数组的每个元素对应事务ID号和事务状态。

一个事务占用2个bit位,一个字节可以存放4个事务状态,一个页块可以存放8192*4=32768个事务状态。

当数据库库启动时,这些文件会被加载到内存中。CLOG的信息同样会被记录到wal日志中,当数据库异常中断时,CLOG的信息会从wal日志还原。

CLOG存放在缓存中,当checkpoint时开始刷新到CLOG文件中。当数据库库关闭库后,CLOG会被写入到$PGDATA/pg_xact子目录中,文件命名为0000,0001,00002......,单个文件最大为256K。

 

Commit Log

· CLOG工作方式

· CLOG如何维护

数据库正常关闭或者检查点发生时,clog数据写入pg_xact目录下的文件中

命名习惯:0000 0001 ……

数据库启动时从pg_xact文件中加载数据

由Vacuum 进程定期处理

 

诊断当前用到的CLOG块

· 计算当前使用的CLOG数据块位置

一个事务占用2个bit位,一个字节可以存放4个事务状态,一个页块可以存放8192*4=32768个事务状态。

1、查看当前的TXID号

SELECT txid_current();

txid_current

--------------

623

2、计算记录在哪个CLOG块中

select 623/(8192*4) block;

block

-------

0

 

删除不需要的CLOG文件

· 删除CLOG文件

当发生急性冻结时会更新pg_database.datfrozenxid的值,此时,如果某些CLOG文件不包含包含最小pg_database.datfrozenxid以及之前的信息,会尝试删除不必要的clog文件。因为这些CLOG文件中记录的事务所修改的行已经被冻结,那么在进行行可见性规则判断时就不需要获得该事务的状态。

 

 

 

以上就是【PostgreSQL从小白到专家】第22讲 - "CLOG作用与管理" 的内容,欢迎一起探讨交流,往期视频及文档,联系CUUG

标签:文件,事务,CLOG,PostgreSQL,22,状态,pg
From: https://www.cnblogs.com/cnblogs5359/p/17554520.html

相关文章

  • mongodb4.4.22主从(副本集附仲裁节点)部署带认证模式
    环境:OS:CentOS7DB:4.4.22机器角色:192.168.1.102:29001主192.168.1.104:29001从192.168.1.105:29001仲裁节点 1.下载相应的版本https://www.mongodb.com/download-center/community我这里下载的是mongodb-linux-x86_64-rhel70-4.4.22.tgz 2.创建安装目录192.168.1.102......
  • 2022 RoboCom 世界机器人开发者大赛-高职组(省赛)
    RC-v1您好呀print("NinHaoYa~")RC-v2爷爷奶奶您好呀#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongint32_tmain(){ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);stringa,b,c;cin>......
  • fastapi框架docs文档Responses去掉默认的异常响应422Validation Error
    fastapi框架原生docs的Responses中会有个默认的422ValidationError响应,但大多数实际开发应该不需要,如何去除呢?我用的方法是用猴子补丁重写fastapi.openapi.util里的get_openapi_path方法,去掉加入默认422的那段代码即可,下面这些http422=str(HTTP_422_UNPROCESSABLE_ENTITY)......
  • CF1220F Gardener Alex 题解--zhengjun
    发现根节点一定是\(1\),所以考虑两边的子树深度,然后发现只需要考虑一段后缀或前缀的深度即可。所以循环位移后,可以从中间往两边构建笛卡尔树,实时维护深度即可。代码#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=2e5+10;intn,a[N],ans[N];......
  • PostgreSQL 分组汇总(一)
    聚合函数聚合函数(aggregatefunction)针对一组数据行进行运算,并且返回单个结果。PostgreSQL支持以下常见的聚合函数:AVG-计算一组值的平均值。COUNT-统计一组值的数量。MAX-计算一组值的最大值。MIN-计算一组值的最小值。SUM-计算一组值的和值。STRING_AGG-连接一组字符串。......
  • 22年普陀区一模卷错题总结
    13.错误原因:听力没有听清26.错误原因:lovely的另一个意思不知道28.considerdoing固定搭配不会44.third不会拼49.surprise的各种词性及用法没搞清楚51.keepsettingyourselfnewchallenges意思不懂53.分不清howlong和howsoon的适用场合67.做题时没有联系上下文74.imagi......
  • postgresql 简单使用
    编译安装的启动数据库:/usr/local/postgresql/bin/pg_ctl-D/data/postgresql-llogfilestart停止数据库:/usr/local/postgresql/bin/pg_ctl-D/data/postgresqlstop-mfast登录数据库:/usr/local/postgresql/bin/psqlpostgres 配置文件:/data/postgresql/postgresql.con......
  • ABC222D-Between Two Arrays(前缀和优化dp)
    题意:给定两个递增数列A和B,构造一个ai <=ci<=bi的递增数列C,询问满足条件的C的个数。普通dp会超时,用前缀和优化n=int(input())a=list(map(int,input().split()))b=list(map(int,input().split()))l=3010dp=[[0]*lfor_inrange(n+1)]dp[0][0]=1foriinrange(n)......
  • QOJ 6504. CCPC Final 2022 D Flower's Land 2题解
    QOJ6504.CCPCFinal2022DFlower'sLand2题解题意简述给你一个只含\(0,1,2\)的序列,相邻两个相同的数字可以直接消掉。询问包含两种区间所有数\(+1\)并对\(3\)取模。求一段区间能否用上述消除方式消完。样例输入8901211012245236168168236......
  • 2022 省队二轮集训培训日记-Day7
    模拟赛T1这个题一看就非常DP,考虑设$f_i$表示跳到$i$的最优解,但是发现无法转移。为什么?考虑从$j$跳到$i$时,我们除了考虑$j$与$i$之间的$x$需要满足$x+a_x<i$之外,对于$x<j$,我们仍然有同样的限制。所以这个限制我们干脆再开一维记一下,设$f_{i,x}$表示对于$j......