人大金仓数据库KingbaseES WAL类型分析介绍

关键字:

KingbaseES、WAL

什么是WAL?

WAL(Write Ahead Log)预写日志,是数据库系统中常见的一种手段,用于保证数据操作的原子性和持久性。在使用WAL的系统中,所有的修改在提交之前都要先写入日志中。

为什么需要WAL?

数据持久性:WAL确保了数据持久性,即使系统发生故障或者崩溃,也能保证数据的完整性。

提高性能:WAL可以显著的提高数据库写入性能。相比直接将数据写入磁盘,将数据写入日志文件通常更快,表现为连续写日志文件。此外,WAL可以使用批量写的方式,将多个操作日志一次性写入日志文件,进一步提高性能。

保护数据一致性:WAL保证数据的一致性。在执行修改之前,数据库将相应的日志记录写入日志文件中。这样可以保证在执行修改操作时,如果系统发生故障,可以根据日志文件恢复到修改前状态,避免数据不一致。

支持事物:WAL是支持事物的重要组成部分。WAL可以记录事物执行状态,以及事物中所有的修改操作,以保证事物的ACID。

WAL日志类型

Res Name: 日志类型名称

Rmgr ID: 日志类型所属唯一ID

Description:  日志类型描述

Info Type:日志子类型

Res Name

Rmgr ID

Description

Info Type

XLOG

RM_XLOG_ID

和xlog相关的事物日志,包括Checkpoint、日志切换等

XLOG_RMGR_NEXTOID:
XLOG_RMGR_CHECKPOINT_SHUTDOWN:
XLOG_RMGR_CHECKPOINT_ONLINE:
XLOG_RMGR_PARAMETER_CHANGE:

XLOG_RMGR_FPW_CHANGE:
XLOG_RMGR_BACKUP_END:

XLOG_FPI:
XLOG_FPI_FOR_HINT

XLOG_OVERWRITE_CONTRECORD

XLOG_END_OF_RECOVERY

XLOG_NOOP

XLOG_SWITCH

XLOG_RESTORE_POINT

Transaction

RM_XACT_ID

和事物相关的事物日志,包括事物提交、回滚、两阶段提交等

XLOG_XACT_COMMIT
XLOG_XACT_COMMIT_PREPARED

XLOG_XACT_ABORT
XLOG_XACT_ABORT_PREPARED

XLOG_XACT_PREPARE

XLOG_XACT_ASSIGNMENT

Storage

RM_SMGR_ID

存储文件的操作,包括创建、截断等

XLOG_SMGR_CREATE
XLOG_SMGR_TRUNCATE

XLOG_SMGR_DELETE

XLOG_SMGR_ENCINFO

CLOG

RM_CLOG_ID

和事物提交相关的事物日志,事物提交会在clog中记录事物状态

CLOG_ZEROPAGE
CLOG_TRUNCATE

Database

RM_DBASE_ID

和数据库相关操作,包括创建、删除等

XLOG_DBASE_CREATE
XLOG_DBASE_DROP

Tablespace

RM_TBLSPC_ID

和表空间相关的操作产生的事物日志,包括创建、删除等

XLOG_TBLSPC_CREATE
XLOG_TBLSPC_DROP

MultiXact

RM_MULTIXACT_ID

在同一个元组上加多个锁产生了MultiXsct的事物日志

XLOG_MULTIXACT_ZERO_OFF_PAGE XLOG_MULTIXACT_ZERO_MEM_PAGE

XLOG_MULTIXACT_CREATE_ID

XLOG_MULTIXACT_TRUNCATE_ID

RelMap

RM_RELMAP_ID

系统表oid和relFileNode映射信息

XLOG_RELMAP_UPDATE

Standby

RM_STANDBY_ID

和Standby相关的事物日志,包括记录锁信息、事物运行信息等

KES_XLOG_STANDBY_LOCK

KES_XLOG_STANDBY_XACTS

KES_XLOG_INVALIDATIONS

Heap2

RM_HEAP2_ID

对Heap进行操作的事物日志,包括对页面的清理操作、tuple冻结等

WAL_HEAP2_FREEZE_PAGE

WAL_HEAP2_CLEAN

WAL_HEAP2_CLEANUP_INFO

WAL_HEAP2_VISIBLE

WAL_HEAP2_MULTI_INSERT

WAL_HEAP2_LOCK_UPDATED

WAL_HEAP2_REWRITE

WAL_HEAP2_NEW_CID

Heap

RM_HEAP_ID

对Heap进行操作的事物日志,包括DML操作等

WAL_HEAP_INSERT

WAL_HEAP_DELETE

WAL_HEAP_UPDATE:
WAL_HEAP_HOT_UPDATE:

WAL_HEAP_CONFIRM

WAL_HEAP_LOCK

WAL_HEAP_INPLACE

WAL_HEAP2_NEW_CID

Btree

RM_BTREE_ID

用于记录操作Btree索引的日志

XLOG_BTREE_INSERT_LEAF:
XLOG_BTREE_INSERT_UPPER:
XLOG_BTREE_INSERT_META:

XLOG_BTREE_SPLIT_L:
XLOG_BTREE_SPLIT_R:

XLOG_BTREE_VACUUM

XLOG_BTREE_DELETE

XLOG_BTREE_UNLINK_PAGE:
XLOG_BTREE_UNLINK_PAGE_META:

XLOG_BTREE_MARK_PAGE_HALFDEAD

XLOG_BTREE_NEWROOT

XLOG_BTREE_META_CLEANUP

Hash

RM_HASH_ID

用于记录操作Hash索引的日志

XLOG_HASH_INIT_META_PAGE

XLOG_HASH_INIT_BITMAP_PAGE

XLOG_HASH_SPLIT_PAGE

XLOG_HASH_INSERT

XLOG_HASH_DELETE XLOG_HASH_SPLIT_CLEANUP

XLOG_HASH_UPDATE_META_PAGE

XLOG_HASH_ADD_OVFL_PAGE

XLOG_HASH_SPLIT_ALLOCATE_PAGE

XLOG_HASH_VACUUM_ONE_PAGE

XLOG_HASH_SPLIT_COMPLETE

XLOG_HASH_MOVE_PAGE_CONTENTS

XLOG_HASH_SQUEEZE_PAGE

Gin

RM_GIN_ID

用于记录操作GIN索引的日志

XLOG_GIN_CREATE_PTREE

XLOG_GIN_INSERT

XLOG_GIN_SPLIT

XLOG_GIN_VACUUM_PAGE

XLOG_GIN_VACUUM_DATA_LEAF_PAGE

XLOG_GIN_DELETE_PAGE

XLOG_GIN_UPDATE_META_PAGE

XLOG_GIN_INSERT_LISTPAGE

XLOG_GIN_DELETE_LISTPAGE

Gist

RM_GIST_ID

用于记录操作GiST索引的日志

XLOG_GIST_PAGE_UPDATE

XLOG_GIST_DELETE

XLOG_GIST_PAGE_SPLIT

XLOG_GIST_PAGE_DELETE

SPGist

RM_SPGIST_ID

用于记录操作SPGist索引的日志

XLOG_SPGIST_ADD_LEAF

XLOG_SPGIST_MOVE_LEAFS

XLOG_SPGIST_PICKSPLIT

XLOG_SPGIST_ADD_NODE

XLOG_SPGIST_SPLIT_TUPLE

XLOG_SPGIST_VACUUM_LEAF

XLOG_SPGIST_VACUUM_ROOT

XLOG_SPGIST_VACUUM_REDIRECT

BRIN

RM_BRIN_ID

用于记录操作Brin索引的日志

XLOG_BRIN_CREATE_INDEX

XLOG_BRIN_SAMEPAGE_UPDATE

XLOG_BRIN_INSERT

XLOG_BRIN_UPDATE

XLOG_BRIN_REVMAP_EXTEND

XLOG_BRIN_DESUMMARIZE

Sequence

RM_SEQ_ID

用于序列操作日志

NULL

CommitTS

RM_COMMIT_TS_ID

事物提交时间戳日志记录

COMMIT_TS_ZEROPAGE

COMMIT_TS_TRUNCATE

COMMIT_TS_SETTS

ReplicationOrigin

RM_REPLORIGIN_ID

复制源日志记录

XLOG_REPLORIGIN_SET

XLOG_REPLORIGIN_DROP

Generic

RM_GENERIC_ID

一种通用的WAL记录类型,来描述对页面的修改(日志记录是页面级的)

NULL

LogicalMessage

RM_LOGICALMSG_ID

用于记录逻辑解码相关操作日志

NULL

EncryptMethod

RM_METHOD_ID

用于记录加载/卸载加密设备操作日志

XLOG_METHOD_LOAD

XLOG_METHOD_UNLOAD

TablespaceEnc

RM_TBLSPC_ENC_ID

和表空间加密相关的操作产生的事物日志,包括创建、删除等

XLOG_TBLSPC_CREATE

XLOG_TBLSPC_DROP

TabcloumnEnc

RM_COLUMN_ENC_ID

用于记录列加密操作日志

WAL_COLENC_CREATE

WAL_COLENC_DROP

Heap3

RM_HEAP3_ID

用于就地更新的日志

WAL_HEAP3_INPLACE

WAL_HEAP3_INPLACE_PBE

Bitmap

RM_BITMAP_ID

用于记录Bitmap索引操作日志

XLOG_BITMAP_INSERT_LOVITEM

XLOG_BITMAP_INSERT_META

XLOG_BITMAP_INSERT_BITMAP_LASTWORDS

XLOG_BITMAP_INSERT_WORDS

XLOG_BITMAP_UPDATEWORD

XLOG_BITMAP_UPDATEWORDS

如何查看日志?

sys_waldump --help

Usage:

sys_waldump [OPTION]... [STARTSEG [ENDSEG]]

Options:

-b, --bkp-details output detailed information about backup blocks

--block-size=SIZE set table block size in kB [8]

-e, --end=RECPTR stop reading at WAL location RECPTR

-f, --follow keep retrying after reaching end of WAL

-n, --limit=N number of records to display

-p, --path=PATH directory in which to find log segment files or a

directory with a ./sys_wal that contains such files

(default: current directory, ./sys_wal, $KINGBASE_DATA/sys_wal)

-i, --node-id=nodeid when directory in which to find log segment files,the nodeid don't need to be specified

when directory with a ./data or ./data/sys_wal/ that contains such files,the nodeid must be specified

-r, --rmgr=RMGR only show records generated by resource manager RMGR;

use --rmgr=list to list valid resource manager names

-s, --start=RECPTR start reading at WAL location RECPTR

-t, --timeline=TLI timeline from which to read log records

(default: 1 or the value used in STARTSEG)

-V, --version output version information, then exit

-x, --xid=XID only show records with transaction ID XID

-z, --stats[=record] show statistics instead of records

(optionally, show per-record statistics)

-k, --key-path=PATH file in which to get WAL key

-d, --display-enc display the encryption status of each WAL

-?, --help show this help, then exit

WAL内容介绍

rmgr: 资源名称(日志类型)

len:日志长度

tx:事物ID

lsn:日志编号

prev:上一条日志编号

seqno:sequence number,保证同一个block操作全局有序—RAC增加

desc:日志描述信息。desc 内容以info type开始记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值