繁体   English   中英

交易可合理化,奇怪的行为吗?

[英]Transaction SERIALIZABLE, weird behaviour?

我在玩事务,但是我有一个奇怪的行为,我无法解释。 也许你可以帮我吗?

考虑两个事务,T1和T2都在隔离级别SERIALIZABLE下运行。 T1开始执行插入而无需提交。 当T1执行其插入操作时,T2开始。 但是,T2插入10k行。 但是在插入147之后,错误ORA-08177:无法序列化对此事务的访问。

但是,这不应该发生,因为T1在此行上没有锁(它不是重复的键或类似的东西),那为什么还要发生呢?

T1
INSERT INTO A 
VALUES(520089, 1, 'START', '198903111695', 'YEAR', 2017, '675013219393', 'I8', 'CREATED', '2016-08-09 18:26:49','2017-03-15 06:39:27');




T2
INSERT INTO A VALUES(520100,2, 'ACHIEVED', '196107246620', 'YEAR', 2018, '660564690379', 'I0', 'FULL', '2018-07-09 07:54:35', '2010-10-20 17:42:04');
INSERT A VALUES(520101,2, 'ACHIEVED', '196107246620', 'YEAR', 2018, '660564690379', 'I0', 'FULL', '2018-07-09 07:54:35', '2010-10-20 17:42:04');
.....for loop
INSERT INTO A VALUES(520147, 2, 'STARTED', '196503264535', 'MONTH', 201105, '305355347867', 'I8', 'TESTED', '2012-11-14 00:31:58', '2015-08-16 09:36:41')
here it crash, and gives me the error.

我唯一的主键是A中的第一个值,第二个值是外键。

那么,有人可以解释发生了什么吗?

由于您正在使用可序列化的事务,该事务将等待其他事务锁定同一表。 真的需要吗? 只需尝试删除级别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM