十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
RC |
事务开始 |
(1).执行SQL语句之前,将系统中非当前活跃事务信息输出到一个副本trx_list |
(2).用户在当前SQL开始读取记录,假设读取到的记录事务ID为trx_id_0 |
(3).找出trx_list 中最早的事务trx_id_1 和 最晚的事务trx_id_2 |
(4).如果trx_id_0 |
(5).如果trx_id_0>trx_id_2 则表示该行记录在本SQL执行之后发生了其他事务,因此该行不可见。转至(7) |
(6).如果trx_id_1<=trx_id_0<=trx_id_2 则表示该行记录在本SQL开启时处于活动状态,因此该行不可见。转至(7) |
(7).从该行记录的DB_ROLL_PTR指针所指向的回滚段中取出最新的undo-log的版本号,将它赋值该trx_id_0,然后跳到步骤(4) |
(8).将该行的数据返回给用户,跳转至(2) |
(9).所有记录遍历完毕,关闭trx_list,跳转至(1),执行下一条SQL |
事务结束 |
RR |
事务开始,将系统中非当前活跃事务信息输出到一个副本trx_list |
(1).执行SQL语句 |
(2).用户在当前本事务开始读取记录,假设读取到的记录事务ID为trx_id_0 |
(3).找出trx_list 中最早的事务trx_id_1 和 最晚的事务trx_id_2 |
(4).如果trx_id_0 |
(5).如果trx_id_0>trx_id_2 则表示该行记录在本事务开启之后发生了其他事务,因此该行不可见。转至(7) |
(6).如果trx_id_1<=trx_id_0<=trx_id_2 则表示该行记录在本事务开启时处于活动状态,因此该行不可见。转至(7) |
(7).从该行记录的DB_ROLL_PTR指针所指向的回滚段中取出最新的undo-log的版本号,将它赋值该trx_id_0,然后跳到步骤(4) |
(8).将该行的数据返回给用户,跳转至(2) |
(9).所有记录遍历完毕,跳转至(1),执行下一条SQL |
事务结束,关闭trx_list |