Skip to main content

事务

数据库中的事务是指由一个或多个数据库操作组成的逻辑工作单元。事务是一连串的数据库操作符,如读取(查询)和写入(更新或插入),它们被视为一个不可分割且一致的单元。事务的主要目的是确保数据完整性和维护数据库的 ACID(原子性、一致性、隔离性、持久性)属性。

只读事务

RisingWave 支持只读事务,事务中的所有读取都针对一致的 Hummock 快照执行。Hummock 是 RisingWave 中基于 LSM-Tree 的存储引擎,专门针对流式工作负载进行了优化。

要启动事务,可使用 START TRANSACTION READ ONLYBEGIN READ ONLY 命令。随后可以执行查询,从一致快照中读取数据。要最终完成事务并将查询作为单个单元提交,可使用 COMMIT 命令。

请注意,在事务启动但尚未提交时,不允许修改数据。事务中不允许使用下列语句:

  • 所有 DDL 语句(CREATEALTERDROP
  • 大多数 DML 语句(INSERTUPDATEDELETE
  • USER 有关的语句。这类语句可能与 DDL 语句重叠。
  • 所有与权限相关的语句,包括 GRANTREVOKE

CDC 表内的事务

创建表格用于摄取 CDC 数据流时,可通过在 CREATE TABLE 语句的 WITH 子句中将 transactional 设置为 true 来启用此功能。请注意,只有在使用本地 MySQL CDCPostgreSQL CDCCitus CDC 连接器时,此功能才可用。

出于性能考虑,无法保证涉及更改超过 4096 行的事务。