---
title: "事务日志说明 - OceanBase 数据库 V4.6.0 | OceanBase 文档中心"
description: 事务日志说明 本文介绍了不同事务日志类型的详细结构及说明。 事务类型 根据事务的操作类型以及访问数据的分布，可以将事务分为两种类型： 本地单分区事务：事务信息的维护与该事务的访问数据在同一个节点上（同一个 OBServer 节点），且该事务仅访问同一个数据分区内的数据。 分布式事务：事务信息的维护与该事务的访问数据在…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.6.0

# 事务日志说明

更新时间：2026-06-03 08:41:19

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.6.0/zh-CN/700.reference/1500.Components-and-Tools/100.manage/200.ob-admin/300.clog/500.transaction-information-of-clog.md)  

本文介绍了不同事务日志类型的详细结构及说明。

## 事务类型

根据事务的操作类型以及访问数据的分布，可以将事务分为两种类型：

- 本地单分区事务：事务信息的维护与该事务的访问数据在同一个节点上（同一个 OBServer 节点），且该事务仅访问同一个数据分区内的数据。
 - 分布式事务：事务信息的维护与该事务的访问数据在不同节点上，或者事务访问多个数据分区。

对于事务类型的详细说明，请参考 [本地事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005683254)、[分布式事务](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000005685956)。

## 事务日志记录类型

根据事务日志记录产生的阶段，可以将事务日志记录分为两类：

- 事务执行时日志记录
 - 事务提交时日志记录

### 事务执行时日志记录

在事务执行过程中，如果需要对事务的修改进行持久化，则相应事务将产生日志记录并对其进行持久化，这类日志记录称之为事务执行时日志记录。 事务执行时日志记录的类型如下所示：

| 日志类型 | 内部类型值 | 说明 |
| --- | --- | --- |
| `OB_LOG_MUTATOR` | 0x200 | 事务的 mutator 日志，包含事务的修改内容。 |
| `OB_LOG_TRANS_STATE` | 0x400 | 事务的状态日志。 |
| `OB_LOG_MUTATOR_WITH_STAT` | 0x600 | 事务的状态日志，携带 mutator 日志。 |
| `OB_LOG_MUTATOR_ABORT` | 0x800 | 事务的 abort 日志，用于标记该事务已回滚。 |

### 事务提交时日志记录

事务进入到提交阶段后，需要对事务的修改进行持久化。在该阶段，根据事务的不同类型，将产生不同类型的事务日志记录。

- 分布式事务的提交时日志记录的类型如下所示：

  | 日志类型 | 内部类型值 | 说明 |
  | --- | --- | --- |
  | `OB_LOG_TRANS_REDO` | 0x1 | 分布式事务的 redo 日志，包含事务的修改内容（redo日志）。 |
  | `OB_LOG_TRANS_PREPARE` | 0x2 | 分布式事务的 prepare 日志。 |
  | `OB_LOG_TRANS_REDO_WITH_PREPARE` | 0x3 | 分布式事务的prepare日志，包含事务的修改内容（redo日志）。 |
  | `OB_LOG_TRANS_COMMIT` | 0x4 | 分布式事务的 commit 日志，标记该事务已提交。 |
  | `OB_LOG_TRANS_ABORT` | 0x8 | 分布式事务的 abort 日志，标记该事务已回滚。 |
  | `OB_LOG_TRANS_CLEAR` | 0x10 | 分布式事务的 clear 日志，用于释放事务上下文信息。 |
 - 本地单分区事务的提交时日志记录的类型如下所示：

  | 日志类型 | 内部类型值 | 说明 |
  | --- | --- | --- |
  | `OB_LOG_SP_TRANS_REDO` | 0x20 | 单分区事务的 redo 日志，包含事务的修改内容（redo日志）。 |
  | `OB_LOG_SP_TRANS_COMMIT` | 0x40 | 单分区事务的 commit 日志，标记该事务已提交，包含事务的修改内容（redo日志）。 |
  | `OB_LOG_SP_TRANS_ABORT` | 0x80 | 单分区事务的 abort 日志，标记该事务已回滚。 |

## 事务标识符 （Transaction ID）

事务标识符主要用于区分 OBServer 节点内部的不同事务。因此，事务标识符需要具有唯一性，不同事务具有不同的事务标识符。 为了实现事务标识符的唯一性，事务标识符的结构如下所示：

```java
class ObTransID
{
  uint64_t hv_;
  common::ObAddr server_;
  int64_t inc_;
  int64_t timestamp_;
}

```

下表列出了字段名的详细信息。

| 字段名 | 说明 |
| --- | --- |
| `server_` | 维护该事务标识符的 OBServer 节点的 IP 地址。 |
| `inc_` | OBServer 节点维护的单调递增值，OBServer 节点重启后重新计数。 |
| `timestamp_` | 创建该事务标志符时的本地物理时钟值（Unix时间戳）。 |
| `hv_` | 根据以上三个字段计算得到的 hash 值。 |

#### 说明

由于 OceanBase 数据库采用了 64 位 hash 值，两个不同事务标识符的 hash 值产生冲突的概率极低。因此，在大多数情况下，可以使用 hash 值来区分不同事务。

  上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
