mysql事务 可见性,【每日阅读】2020年12月09日-事务先后的可见性
問(wèn):id=1的k初始值是1,那么圖中事務(wù)A、B查詢到的值分別是多少?(事務(wù)隔離級(jí)別是可重復(fù)讀)
注:begin/start transaction 命令并不是一個(gè)事務(wù)的起點(diǎn),在執(zhí)行到它們之后的第一個(gè)操作 InnoDB 表的語(yǔ)句,事務(wù)才真正啟動(dòng)。如果你想要馬上啟動(dòng)一個(gè)事務(wù),可以使用 start transaction with consistent snapshot 這個(gè)命令。
答案:A查出來(lái)是1,B查出來(lái)是3。
A查出來(lái)是1是因?yàn)樗沁@3個(gè)事務(wù)里面最早創(chuàng)建的事務(wù),其他后序創(chuàng)建的事務(wù)都對(duì)他不可見(jiàn)。
B之所以能查出來(lái)C更新后的2再更新后得到的3,是因?yàn)閡pdate是當(dāng)前讀,當(dāng)前讀后再更新,當(dāng)前讀能讀到最新的更新后的值。
select可以實(shí)現(xiàn)當(dāng)前度的方式有兩種:
mysql> select k from t where id=1 lock in share mode;
mysql> select k from t where id=1 for update;
第一種是共享鎖,第二種是排它鎖。
原創(chuàng)文章,作者:geekgao,如若轉(zhuǎn)載,請(qǐng)注明出處:https://www.geekgao.cn/archives/2739
總結(jié)
以上是生活随笔為你收集整理的mysql事务 可见性,【每日阅读】2020年12月09日-事务先后的可见性的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 残疾人射箭分级公开级是什么意思?
- 下一篇: tp5 备份数据库