更改事务隔离级别
默认情况下,Vertica 对所有会话使用 READ COMMITTED
隔离级别。您可以更改数据库或给定会话的默认隔离级别。
事务将保留其隔离级别直至其完成,即使在事务处理期间会话的隔离级别发生更改也是如此。Vertica 内部进程(例如 Tuple Mover 和 刷新操作)以及 DDL 操作始终以 SERIALIZABLE 隔离级别运行以确保一致性。
数据库隔离级别
配置参数
TransactionIsolationLevel
将指定数据库隔离级别,并用作所有会话的默认值。使用
ALTER DATABASE
更改默认隔离级别。例如:
=> ALTER DATABASE DEFAULT SET TransactionIsolationLevel = 'SERIALIZABLE';
ALTER DATABASE
=> ALTER DATABASE DEFAULT SET TransactionIsolationLevel = 'READ COMMITTED';
ALTER DATABASE
数据库隔离级别的更改仅适用于将来的会话。现有会话及其事务会继续使用原始隔离级别。
使用
SHOW CURRENT
查看数据库隔离级别:
=> SHOW CURRENT TransactionIsolationLevel;
level | name | setting
----------+---------------------------+----------------
DATABASE | TransactionIsolationLevel | READ COMMITTED
(1 row)
会话隔离级别
SET SESSION CHARACTERISTICS AS TRANSACTION
更改特定会话的隔离级别。例如:
=> SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SET
使用
SHOW
查看当前会话的隔离级别:
=> SHOW TRANSACTION_ISOLATION;