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)
新架构 FAQ
集群部署 FAQ
SQL 查询 FAQ
MatrixGate FAQ
运维 FAQ
监控告警 FAQ
PXF FAQ
PLPython FAQ
性能 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 数据库语言的扩展。