事务

多个用户会话中的 事务并发访问相同数据时,会话范围的隔离级别决定了每个事务可访问哪些数据。

事务将保留其隔离级别直至其完成,即使在事务处理期间会话的隔离级别发生更改也是如此。Vertica 内部进程(例如 Tuple Mover刷新操作)以及 DDL 操作始终以 SERIALIZABLE 隔离级别运行以确保一致性。

Vertica 查询解析器支持标准 ANSI SQL-92 隔离级别,如下所示:

  • READ COMMITTED(默认值)

  • READ UNCOMMITTED:自动解释为 READ COMMITTED。

  • REPEATABLE READ:自动解释为 SERIALIZABLE

  • SERIALIZABLE

事务隔离级别 READ COMMITTED 与 SERIALIZABLE 的区别如下:

您可以为数据库和各个事务设置单独的隔离级别

实现详细信息

Vertica 支持具有标准 ACID 属性的传统 SQL 事务:

  • ANSI SQL 92 风格隐式事务。您无需运行 BEGIN 或 START TRANSACTION 命令。

  • 没有重做/撤消日志或两阶段提交。

  • COPY 命令会自动提交自身及所有当前事务(加载临时表时除外)。一般来说,在使用 COPY 之前提交或回退当前事务是一种很好的做法。此步骤对 DDL 语句来说是可选的,因为此类语句会自动提交。