想象我有两笔交易
T1-以READ_COMMITTED隔离级别写入表(例如Table1)的繁重数据处理作业。T2-以SERIALIZABLE隔离级别从Table1读取数据的事务。
autoincrement_id(INT)数据(varchar)
INSERT INTO Table1… INSERT INTO Table1…INSERT INTO Table1…
从表1中选择autoincrement_id
如果T2在T1之前开始,它实际上会停止T1(正确吗?)
但是如果T1在T2之前开始,在T2期间还在进行中,T2会读到T1插入但没有提交的数据吗?
如果T2在T1之前开始,它实际上会停止T1(正确吗?)
是的,正确!
但是如果T1在T2之前开始,在T2期间还在进行中,T2会读到T1插入但没有提交的数据吗?
不,T1会自动停止T2。所以T2等待T1被提交或回滚(至少在理论上…)。