LSN(Log Sequence Number)是由系统自动维护的 Bigint
类型数值,具有自动递增、全局唯一特性,每一个 LSN 值代表着 DM 系统内部产生的一个 物理事务 。
DM 主要包括以下 几种类型的 LSN:
CUR_LSN
是系统已经分配的最大 LSN 值。物理事务提交时,系统会为其分配 一个唯一的 LSN 值,大小等于CUR_LSN + 1
,然后再修改CUR_LSN = CUR_LSN + 1
。FILE_LSN
是已经写入联机日志文件的最大 LSN 值。每次将RLOG_PKG
写入联机日志文件后,都要修改FILE_LSN
值。FLUSH_LSN
是已经发起日志刷盘请求,但还没有真正写入联机日志文件的最大 LSN 值。CKPT_LSN
是检查点 LSN,所有LSN <= CKPT_LSN
的物理事务修改的数据页,都已经从 Buffer 缓冲区写入磁盘,CKPT_LSN
由检查点线程负责调整。APPLY_LSN
是备库重演 LSN,表示备库已经重演完成的最大 LSN。
与上述 LSN 对应,DM 数据守护也定义了一批 LSN:
CLSN
与CUR_LSN
保持一致,数据库已经分配的最大 LSN 值。FLSN
与FILE_LSN
保持一致,已写入联机日志文件的 LSN 值。ALSN
与APPLY_LSN
保持一致,备库已经重演完成的最大 LSN 值。SLSN
是 Standby LSN 的缩写,表示备库明确可重演的最大 LSN 值。KLSN
是 Keep LSN 的缩写,表示备库已经收到、但未明确是否可以重演的 RLOG_PKG 的最大 LSN 值。在读写分离集群中KLSN == SLSN
。
查询
DM 数据库中与 LSN 相关的信息,可以通过查询 V$RLOG
表来获取。
select * from v$rlog;
达梦社区网址:eco.dameng.com/