久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

如何理解 MySQL 事務中的不可重復讀和幻讀問題?

瀏覽:155日期:2022-06-20 14:25:22

問題描述

如何理解 MySQL 事務中的不可重復讀和幻讀問題? 或者說 READ COMMIT 和 REPEAT COMMIT 兩種隔離性的區別在哪?

問題解答

回答1:

剛好學習一下這個,我就粗淺的來說說我的想法:Read Committed(不可重復讀):假設事務1讀取了一條記錄(select user_name from user where user_id = 1),得到user_name = ’456’,事務1暫時沒提交。事務2更新了一條記錄(update user set user_name = ’123’ where user_id = 1),事務2提交。此時事務1再次select user_name from user where user_id = 1得到了user_name = ’123’,這樣就導致事務1在讀取同一行數據卻得到不同的user_name。這就是所謂的不可以重復讀

Repeatable Read(可重復讀,會產生幻讀):這個跟不可重復讀相反,當事務1查詢到user_name=’456’時,事務2將user_name更新成’123’并提交,事務1再次查詢還是會發現user_name=’456’,這樣保證了可重復讀。幻讀的話就是當事務2插入一條新的數據id為2并提交,事務1由于可重復讀的性質,只能在表中查到id為1的數據,如果此時事務1插入id為2的數據則會產生錯誤,因為此時表中已經有了id為2的數據,但是事務1只看到了id為1的數據。

相關文章:
主站蜘蛛池模板: 永昌县| 沿河| 松阳县| 白朗县| 无极县| 阜阳市| 射阳县| 汉源县| 太和县| 苏尼特左旗| 正蓝旗| 三河市| 大化| 临澧县| 黄浦区| 阳江市| 广宁县| 太原市| 大冶市| 天水市| 桐柏县| 庄浪县| 石嘴山市| 东辽县| 天台县| 平度市| 噶尔县| 南丹县| 华亭县| 江永县| 宣汉县| 洛川县| 邻水| 齐河县| 哈尔滨市| 崇明县| 南部县| 诸暨市| 格尔木市| 观塘区| 庆安县|