大数据就业实战培训 Oracle就业实战培训

CUUG,以就业为导向,让学员学到真正实用的技术

当前位置: CUUG培训-优技培训 >> 关于我们 >

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

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

来源:CUUG培训-优技培训    更新时间:2023/7/21 15:40:09    阅读次数:

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作用与管理" 的内容,欢迎一起探讨交流,钉钉交流群:35822460,会有专门的视频讲解这一部分内容,往期视频及文档,联系CUUG

071考试
大数据课程
WDP
oracle机构
oracle认证
oracle课程
oracle视频
CUUG就业实战培训
CUUG与ORACLE公司建立最核心、最权威、最深层次的战略合作伙伴关系;
CUUG是唯一一家只做DBA就业培训和oracle认证的授权机构,28年培养数万名oracle技术人才;
CUUG金牌讲师授课,来自一线的资深ORACLE OCM技术专家团队;
CUUG顶尖完善的学习体系,以甲骨文原厂ORACLE数据库核心技术为教学课程;

报名入口 点击进入

课程咨询:400-0909-964

考试咨询:400-0909-964

QQ:点击获取

E-mail:yuezt@cuug.com