---
title: "CREATE MATERIALIZED VIEW LOG - OceanBase 数据库 V4.5.0 | OceanBase 文档中心"
description: CREATE MATERIALIZED VIEW LOG 描述 该语句用来创建物化视图日志。 物化视图日志（Materialized View Log，mlog）用于记录基表的增量更新数据，以支持物化视图的快速刷新功能。 mlog 是一个记录表，追踪基表的变化，并将这些变化应用于相应的物化视图，实现快速刷新。 说明 …
---
切换语言

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

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

# CREATE MATERIALIZED VIEW LOG

更新时间：2026-03-27 13:35:55

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.5.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/600.sql-statement-of-mysql-mode/2251.create-materialized-views-log-of-mysql-mode-in-sql.md)  

## 描述

该语句用来创建物化视图日志。

物化视图日志（Materialized View Log，mlog）用于记录基表的增量更新数据，以支持物化视图的快速刷新功能。`mlog` 是一个记录表，追踪基表的变化，并将这些变化应用于相应的物化视图，实现快速刷新。

#### 说明

OceanBase 数据库 `mlog` 暂时不支持指定 Partition，`mlog` 的 Partition 和基表的 Partition 是绑定关系。

## 权限要求

创建物化视图日志需要有 `CREATE TABLE` 和基表的 `SELECT` 权限。更多有关 OceanBase 数据库权限的详细介绍，请参见 [MySQL 模式下的权限分类](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479241)。

## 语法

```sql
CREATE MATERIALIZED VIEW LOG ON [database.] table
    [parallel_clause]
    [with_clause]
    [mv_log_purge_clause];

parallel_clause:
    NOPARALLEL
    | PARALLEL integer

with_clause:
    WITH [ {PRIMARY KEY | ROWID | SEQUENCE}
            [ { , PRIMARY KEY | , ROWID | , SEQUENCE }]... ]
        (column_name [, column_name]...)
        [new_values_clause]

new_values_clause:
    {INCLUDING | EXCLUDING} NEW VALUES

mv_log_purge_clause:
    PURGE {IMMEDIATE [ SYNCHRONOUS ]
        | START WITH datetime_expr [NEXT datetime_expr]
        | [START WITH datetime_expr] NEXT datetime_expr
        }

```

## 参数说明

| **参数** | **描述** |
| --- | --- |
| database. | 可选项，指定物化视图日志基表所在的数据库。如果省略 `database.`，则默认基表在您自己的数据库中。 |
| table | 指定物化视图日志对应的基表名称。 |
| parallel_clause | 可选项，指定创建物化视图表的 dop，即用于指定并行处理物化视图日志的级别。详细介绍可参见下文 [parallel_clause](#parallel_clause)。 |
| with_clause | 可选项，指定物化视图日志中包含的辅助列。用于指示是否记录基表发生变化时的主键（`PRIMARY KEY`）和行标识符（`ROWID`），并且还可以使用该子句添加序列（`SEQUENCE`）来为物化视图日志提供额外的排序信息。详细介绍可参见下文 [with_clause](#with_clause)。 |
| column_name | 可选项，指定要在所有已更改行的物化视图日志中记录其值的列名称。 |
| new_values_clause | 可选项，是否在物化视图日志中同时记录更新操作中的旧值和新值。详细介绍可参见下文 [new_values_clause](#new_values_clause)。 |
| mv_log_purge_clause | 可选项，指定物化视图日志中数据的清除时间。详细介绍可参见下文 [mv_log_purge_clause](#mv_log_purge_clause)。 |

### parallel_clause

- `NOPARALLEL`：默认配置，并行度为 `1`。
 - `PARALLEL integer`：指定并行度，`integer` 取值大于等于 `1`。

### with_clause

- `PRIMARY KEY`：表示物化视图日志记录的是基表的主键列。对有主键表才生效，如果不指定，系统会自动为物化视图日志添加这个属性，即物化视图日志默认会包含主键列。
 - `ROWID`：表示物化视图日志记录的是基表的行标识符（`ROWID`）。如果不指定，系统会自动为物化视图日志添加这个属性，即物化视图日志默认会包含 `M_ROW$$` 列。
 - `SEQUENCE`：表示物化视图日志记录的是事务内的多行更新序号（`seq_no`）。系统会自动为物化视图日志添加这个属性，即物化视图日志会默认包含 `SEQUENCE$$` 列。

### new_values_clause

- `INCLUDING`：默认设置，表示可以在物化视图日志中保存新旧值。如果希望物化视图支持快速刷新，则必须指定 `INCLUDING NEW VALUES`。
 - `EXCLUDING`：表示禁用在物化视图日志中记录新值。请不要使用 `EXCLUDING NEW VALUES`，否则将会报错。

### mv_log_purge_clause

#### 注意

只有在物化视图成功刷新后，物化视图日志中的相应数据才会被清除。

- `IMMEDIATE`：表示在每次刷新完物化视图后就立即清除相应的物化视图日志。默认值是 `SYNCHRONOUS`。

     - `SYNCHRONOUS`：可选项，表示同步地执行清除。
 - `START WITH datetime_expr [NEXT datetime_expr]`：

     - `START WITH datetime_expr`：表示物化视图日志的首次清除时间。
     - `[NEXT datetime_expr]`：可选项，表示下一次清除物化视图日志的时间。用于设置下一次清除物化视图日志的时间。
 - `[START WITH datetime_expr] NEXT datetime_expr`：如果未指定 `START WITH datetime_expr` 参数，仅指定 `NEXT datetime_expr` 参数，那么物化视图日志的第一次清除时间将设定为 `NEXT datetime_expr` 参数的值。

#### 注意

请确保 `START WITH datetime_expr` 和 `NEXT datetime_expr` 这两个时间表达式设定在未来的时间点，否则会引发错误。

建议使用 `sysdate()` 表示当前时区时间，时间表达式示例如下：

```sql
START WITH sysdate() NEXT sysdate() + INTERVAL 1 DAY

```

上述子句表示从当前时间（`sysdate()`）开始，每隔 1 天清理一次过期的物化视图日志记录。

## 示例

1. 创建表 `test_tbl1`。

   ```sql
   CREATE TABLE test_tbl1 (id INT PRIMARY KEY, name VARCHAR(20), age INT);

   ```
 2. 在 `test_tbl1` 表上创建物化视图日志。指定并行处理物化视图日志的并行度为 `5` 和物化视图日志记录 `name` 和 `age` 列的变更信息，并且会记录变更前后的新值；配置物化视图日志从当前日期开始，每隔 `1` 天清理一次过期的物化视图日志记录。

   ```sql
   CREATE MATERIALIZED VIEW LOG ON test_tbl1
     PARALLEL 5
     WITH SEQUENCE(name ,age) INCLUDING NEW VALUES
     PURGE START WITH sysdate() NEXT sysdate() + INTERVAL 1 DAY;

   ```
 3. 查看表 `test_tbl1` 上物化视图日志的信息。

   ```sql
   DESC mlog$_test_tbl1;

   ```

   返回结果如下：

   ```shell
   +------------+-------------+------+------+---------+-------+
   | Field      | Type        | Null | Key  | Default | Extra |
   +------------+-------------+------+------+---------+-------+
   | id         | int(11)     | NO   | PRI  | NULL    |       |
   | name       | varchar(20) | YES  |      | NULL    |       |
   | age        | int(11)     | YES  |      | NULL    |       |
   | SEQUENCE$$ | bigint      | NO   | PRI  | NULL    |       |
   | DMLTYPE$$  | varchar(1)  | YES  |      | NULL    |       |
   | OLD_NEW$$  | varchar(1)  | YES  |      | NULL    |       |
   +------------+-------------+------+------+---------+-------+
   6 rows in set

   ```

## 相关文档

[物化视图日志](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479322)

 上一篇 下一篇 ![有帮助](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) 咨询热线
