PG内核分析 Q&A (16)

优点: 使用MVCC的主要优点是对检索(读取)数据的锁请求与写数据的锁请求并不冲突,
所以读不会阻塞写, 而写也从不阻塞读. 这就极大地提升了并发处理能力.

PG内核分析 Q&A

7.11 日志管理 PG的日志管理是怎样的 日志的必要性

日志是数据库系统必不可少的一部分, 它以一种安全的方式记录数据库变更的历史.

当系统出现故障后, 数据库系统通过使用日志来重建对数据库所做更新的过程,
以恢复数据库到一致状态, 从而保证数据库的一致性和完整性.

PG的日志主要有哪些

4个:

XLOG 事务日志

CLOG 提交日志

SUBTRANS (子事务日志)

MULTIXACT(组合事务日志)

已经有XLOG, 为什么还要CLOG呢

XLOG是一般的日志记录, 即通常意义上所认识的(数据库事务)日志记录,
它记录了事务对数据库更新的过程和事务的最终状态.

CLOG在一般的数据库教材上是没有提及的, 其实CLOG是XLOG的一种辅助形式,
记录了事务的最终状态. 因为每一条XLOG日志记录相对较大,
如果需要通过日志判断一个事务的状态, 那么使用CLOG比使用XLOG要高效的多.

同时CLOG占用的空间也非常有限.

此外, 为支持嵌套事务, PG还引入了SUBTRANS日志记录----即子事务日志,
记录每个事务的父事务的事务ID, 这样通过一个事务可以递归查找到其父事务,
但是并不能通过一个事务查找到其子事务.

同时, 为了支持多版本并发控制, PG引入了组合事务ID(MultiXactID),
记录事务的组合关系, 并维持从众多事务ID到MultiXactId的映射关系.

为什么要设立日志缓冲区

在PG中, 日志通过日志文件来存放. 如果每个日志记录在创建时都被立即写到磁盘上,
那么将增加大量的I/O开销. 因为通常向磁盘的写入是以(数据)块为单位进行的,
而在大多数情况下, 一个日志记录比一个块小得多, 为了降低写入日志带来的I/O开销,
数据库系统在实现时往往设置了日志缓冲区, 即先将日志记录写到主存中的日志缓冲区中,
当日志缓冲区满了以后以块为单位向磁盘写出.

PG中数据库系统直接操作磁盘的日志文件吗

否.

在数据库系统中,
日志缓冲区通过日志管理器来管理.数据库系统并不直接操作磁盘日志文件,
一般是通过日志缓冲区来使用日志文件,
而缓冲区和磁盘之间的交互,同步则由日志管理器来完成.

PG有四种日志管理器, 即XLOG(事务日志), CLOG(事务提交日志),
SUBTRANS(子事务日志)以及MULTIXACT(组合事务日志).

PG是如何管理这些日志的

PG通过一种缓冲区来实现对CLOG日志, SUBTRANS日志以及MULTIXACT日志的管理,
即SLRU缓冲池----采用简单LRU(Last Recently Used)算法作为页面转换算法的缓冲池.

若要获取一个事务状态,直接通过日志管理器操作日志缓冲池吗

不是.

如果要获取一个事务的状态, 并不是直接通过日志管理器操作日志缓冲池,
而是要通过事务日志接口例程(Routes)进行操作.

简介日志的资源管理器作用

由于使用日志的资源有很多种, PG为对日志进行分类,
使用了资源管理器(不是第3章中介绍的资源跟踪器)的概念.
资源管理器主要用于在日志系统中把各种需要记录的数据分类,
通在日志中标识资源管理号, 使系统在恢复或者读取日志记录时,
能够很方便的知道该日志记录的元数据属于哪一类,
从而通过资源管理器的方法可以准确的选择对应的方法.

7.11.1 SLRU缓冲池 SLRU缓冲区

PG内核分析 Q&A

7.11.2 CLOG日志管理器 ** CLOG日志管理器概述

CLOG日志记录的是事务的最终状态. CLOG日志管理器管理着CLOG日志缓冲池,
该日志缓冲池是基于SLRU缓冲池实现的.

CLOG日志管理器模块有哪些主要内容

共2块:

CLOG日志管理器相关数据结构

CLOG日志管理器主要操作

7.11.3 SUBTRANS日志管理器 7.11.4 MULTIXACT日志管理器 7.11.5 XLOG日志管理器 XLOG日志概述

XLOG是传统数据库理论中提到的事务日志, 它详细地记录了服务进程对数据库的操作过程.

XLOG在内存中是如何存放的

XLOG日志文件在内存中按页进行存放, 每个页面大小为8KB, 每个页都有一个头部,
头部信息之后才是XLOG日志记录.

XLOG文件在物理磁盘中是如何存放的

每个XLOG文件都有一个ID, 但事实上它被分为一个个大小为16MB的XLOG段文件来存放.

如何在磁盘目录中唯一的确定XLOG单文件

XLOG文件号和段文件号可以用来唯一的确定这个段文件.

如何确定XLOG日志文件内的一个日志记录的地址

确定日志文件内一个日志记录的地址时,
只需用一个XLOG文件号和日志记录在该文件内人偏移量即可.

XLOG日志管理器模块有哪些主要内容

共3个:

XLOG日志管理器相关数据结构

XLOG日志管理器主要操作

XLOG日志恢复策略

1 XLOG日志管理器相关数据结构 PG日志是REDO还是UNDO日志

PG只使用REDO方法来进行数据库的恢复,
它不使用UNDO是因为其数据的多版本使得UNDO没有必要.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysxsx.html