请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

正在回答 回答被采纳积分+3

2回答

qq_玉皇_0 2024-03-20 16:25:19

第一个例子:

在表中插入一条数据. 在开启事务1234。事务4更新了数据并commit了。事务2接着select 能查到最新数据吗?

分析:trx_list(当前活跃的事务)123

      Up_limit_id(活跃中最小的事务ID):1

      Low_limit_id(下一个要分配的事务ID):5

      Creator_trx_id(创建当前读视图的ID):2

      DB_TRX_ID(当前最新数据记录中的事务ID):4

  比较事务4不在活跃列表中,说明在生成读视图的之前就已提交。事务2 可以查看到最新记录。

第二个例子:

   事务2 select 一次,事务4接着更新数据并提交,事务2  select 第二次读到是最新数据吗?

   分析:

RR在第一次select 时 生成唯一的readview

trx_list(当前活跃的事务)1234

      Up_limit_id(活跃中最小的事务ID):1

      Low_limit_id(下一个要分配的事务ID):5

      Creator_trx_id(创建当前读视图的ID):2

      DB_TRX_ID(当前最新数据记录中的事务ID):4

事务2的第二次select 用的是第一次select读视图 ,比较事务4在活跃列表中,所以事务2即使是第二次select也是看不到最新数据的

 

RR-可重复读:只有在第一次select 时 生成读视图

RC-读已提交:每次select 时都生成读视图


0 回复 有任何疑惑可以回复我~
慕容4241860 2023-06-27 11:26:04

是两个例子,前面一个例子没有在事务4 commit;前select,后面一个例子在事务4 commit以前 select一次,默认隔离RR所以就生成了读视图。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号