400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
400-800-0824
info@ymatrix.cn
YMatrix 文档
关于 YMatrix
标准集群部署
数据写入
数据迁移
数据查询
运维监控
参考指南
工具指南
数据类型
存储引擎
执行引擎
流计算引擎
灾难恢复
系统配置参数
索引
扩展
SQL 参考
常见问题(FAQ)
设置当前事务的特性。
SET TRANSACTION [transaction_mode] [READ ONLY | READ WRITE]
SET TRANSACTION SNAPSHOT snapshot_id
SET SESSION CHARACTERISTICS AS TRANSACTION transaction_mode
[READ ONLY | READ WRITE]
[NOT] DEFERRABLE
其中transaction_mode为下列之一:
ISOLATION LEVEL {SERIALIZABLE | REPEATABLE READ | READ COMMITTED | READ UNCOMMITTED}
SET TRANSACTION命令设置当前事务的特性。 它对任何后续交易都没有影响。
可用的事务特性是事务隔离级别,事务访问模式(读/写或只读)和可延迟的模式。
注意:可延迟事务要求该事务为可序列化。 YMatrix 数据库不支持可序列化的事务,因此包含DEFERRABLE子句无效。 YMatrix 数据库不支持SET TRANSACTION SNAPSHOT命令。
事务的隔离级别确定当其他事务同时运行时,该事务可以看到哪些数据。
SQL标准定义了两个附加级别,即READ UNCOMMITTED和SERIALIZABLE。 在 YMatrix 数据库中,READ UNCOMMITTED被视为READ COMMITTED。 如果指定SERIALIZABLE,则 YMatrix 数据库将退回到REPEATABLE READ。
在执行事务的第一个查询或数据修改语句(SELECT,INSERT,DELETE,UPDATE,FETCH或COPY)之后, 不能更改事务隔离级别。
事务访问模式确定事务是读/写还是只读。 读/写是默认设置。 当事务为只读时,不允许使用以下SQL命令:INSERT,UPDATE,DELETE和COPY FROM(如果要写入的表不是临时表); 所有的CREATE,ALTER和DROP命令; GRANT,REVOKE,TRUNCATE; 如果EXPLAIN ANALYZE和EXECUTE将要执行的命令在上述命令之中,也不被允许。 这是只读的高级概念,不会阻止所有对磁盘的写入。
除非事务既是SERIALIZABLE又是READ ONLY,否则DEFERRABLE事务属性无效。 当在事务上设置了所有这些属性后,该事务在首次获取其快照时可能会阻塞, 此后它可以在没有SERIALIZABLE事务的正常开销的情况下运行,并且没有任何导致序列化失败或被序列化失败取消的风险。 由于 YMatrix 数据库不支持可序列化的事务,因此DEFERRABLE事务属性在 YMatrix 数据库中无效。
SESSION CHARACTERISTICS
READ UNCOMMITTED
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
READ WRITE
READ ONLY
[NOT] DEFERRABLE
如果在没有事先进行START TRANSACTION或BEGIN的情况下执行SET TRANSACTION, 则会发出警告,并且该命令无效。
通过在BEGIN或START TRANSACTION中指定所需的事务模式, 可以省去SET TRANSACTION。
也可以通过设置配置参数default_transaction_isolation, default_transaction_read_only和default_transaction_deferrable来设置会话默认事务模式。
设置当前事务的事务隔离级别:
BEGIN;
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
这两个命令均在SQL标准中定义。 SERIALIZABLE是标准中的默认事务隔离级别。 在 YMatrix 数据库中,默认值为READ COMMITTED。 由于缺少谓词锁定,YMatrix 数据库不完全支持SERIALIZABLE级别, 因此当指定SERIALIZABLE时,它退回到REPEATABLE READ级别。 本质上,谓词锁定系统通过限制写的内容来防止幻像读取, 而 YMatrix 数据库中使用的多版本并发控制模型(MVCC)通过限制读取的内容来防止幻像读取。
PostgreSQL提供了一个真正的可序列化隔离级别,称为可序列化快照隔离(SSI), 它可以监视并发事务并回滚可能引入序列化异常的事务。YMatrix 数据库未实现此隔离模式。
在SQL标准中,可以使用以下命令设置其他事务特性:诊断区域的大小。 此概念是嵌入式SQL特有的,因此未在 YMatrix 数据库服务器中实现。
DEFERRABLE事务模式是 YMatrix 数据库语言的扩展。