事务
多个用户会话中的 事务并发访问相同数据时,会话范围的隔离级别决定了每个事务可访问哪些数据。
事务将保留其隔离级别直至其完成,即使在事务处理期间会话的隔离级别发生更改也是如此。Vertica 内部进程(例如 Tuple Mover 和 刷新操作)以及 DDL 操作始终以 SERIALIZABLE 隔离级别运行以确保一致性。
Vertica 查询解析器支持标准 ANSI SQL-92 隔离级别,如下所示:
-
READ COMMITTED(默认值)
-
READ UNCOMMITTED:自动解释为 READ COMMITTED。
-
REPEATABLE READ:自动解释为 SERIALIZABLE
事务隔离级别 READ COMMITTED 与 SERIALIZABLE 的区别如下:
您可以为数据库和各个事务设置单独的隔离级别。
实现详细信息
Vertica 支持具有标准 ACID 属性的传统 SQL 事务:
-
ANSI SQL 92 风格隐式事务。您无需运行 BEGIN 或 START TRANSACTION 命令。
-
没有重做/撤消日志或两阶段提交。
-
COPY 命令会自动提交自身及所有当前事务(加载临时表时除外)。一般来说,在使用 COPY 之前提交或回退当前事务是一种很好的做法。此步骤对 DDL 语句来说是可选的,因为此类语句会自动提交。