最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL可重復讀隔離級別下開啟事務的問題解決

 更新時間:2024年07月21日 15:34:07   作者:雨下的竹子  
本文主要介紹了MySQL可重復讀隔離級別下開啟事務的問題解決,詳解在Repeatable?Read隔離級別下,mysql的快照生成時機的問題,感興趣的可以了解一下

1.前言

在日常我們操作mysql時,mysql默認是自動提交的。當我們需要開啟一個事務時,可以使用start transactionbegin命令,再使用commitrollback提交或回滾事務。

但事務的使用也有一些注意事項,不注意的話,可能會帶來意料之外的結果。

今天,我要分享的就是在Repeatable Read(簡稱rr)隔離級別下,mysql的快照生成時機的問題。

2.問題引出

我們都知道,rr級別下,是根據快照來讀取數據的,所以他能保證同一事務內的兩次讀取是一致的,不會因為其他事務提交的修改而導致前后讀取結果不一樣。

現在db3庫下有個test表,且mysql隔離級別為rr(默認rr)。

在這里插入圖片描述

開啟兩個會話,一個會話開啟一個事務,另一個會話開啟一個事務并修改一行數據

在這里插入圖片描述

在這里插入圖片描述

按正常理解來說,此時在第一個會話里查詢數據,查詢到的還是原來的’zhuzi1’而不是’zhuzin’

但實際上,我們卻發(fā)現,第二個事務的修改影響到了第一個事務的結果。

在這里插入圖片描述

3.原因

上面問題出現的原因,就是因為我們在開啟一個事務時,并沒有立即生成數據快照,而是在執(zhí)行一次快照讀(所謂快照讀,就是我們平常使用的普通查詢;當前讀則是使用例如for update加鎖的查詢)之后才生成的。所以,當我們在第一個事務中第一次執(zhí)行快照讀時,第二個事務已經提交修改了,當然是可以看到這個修改的。

mysql想要在開啟事務時就生成快照,確保數據不再變化,可以使用如下方式開啟事務

start transaction with consistent snapshot;

這樣,mysql就會在開啟事務時立即生成快照了。

官網對于with consistent snapshot的介紹如下:

在這里插入圖片描述

翻譯的大致意思就是WITH CONSISTENT SNAPSHOT修飾符為innodb啟動一致讀取。且只適用于innodb引擎。其效果與從任何InnoDB表中發(fā)出START TRANSACTION后接SELECT相同。WITH CONSISTENT SNAPSHOT修飾符不會更改當前事務隔離級別,因此只有當前隔離級別允許一致讀取時,它才能提供一致的快照。唯一允許一致讀取的隔離級別是可重復讀取。對于所有其他隔離級別,WITH CONSISTENT SNAPSHOT子句將被忽略。忽略WITH CONSISTENT SNAPSHOT子句時會生成警告。

官網對rr的介紹如下:

在這里插入圖片描述

由此可知,如果你開啟了一個事務,卻不進行一次讀取操作,那么快照是不會建立的

到此這篇關于MySQL可重復讀隔離級別下開啟事務的一個注意事項的文章就介紹到這了,更多相關MySQL可重復讀隔離開啟事務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關文章

  • mysql8.0.11 winx64安裝配置方法圖文教程(win10)

    mysql8.0.11 winx64安裝配置方法圖文教程(win10)

    這篇文章主要為大家詳細介紹了win10下mysql8.0.11 winx64安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MySQL運行報錯:“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”解決方法

    MySQL運行報錯:“Expression?#1?of?SELECT?list?is?not?in?GR

    這篇文章主要給大家介紹了關于MySQL運行報錯:“Expression?#1?of?SELECT?list?is?not?in?GROUP?BY?clause?and?contains?nonaggre”的解決方法,文中將解決方法介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • SQL 聚合、分組和排序

    SQL 聚合、分組和排序

    這篇文章主要介紹了SQL 聚合、分組和排序,文章圍繞SQL 聚合、分組、排序的相關資料展開具體內容,需要的朋友可以參考一下
    2021-11-11
  • MYSQL中Truncate的用法詳解

    MYSQL中Truncate的用法詳解

    這篇文章主要介紹了MYSQL中Truncate的用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • MySQL8.0 MGR的維護管理

    MySQL8.0 MGR的維護管理

    數據庫已成為企業(yè)和管理員們最為關注的核心組件之一,本文主要介紹了MySQL8.0 MGR的維護管理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-08-08
  • MySQL 選擇合適的存儲引擎

    MySQL 選擇合適的存儲引擎

    這篇文章主要介紹了MySQL如何選擇合適的存儲引擎,幫助大家更好的理解和使用MySQL數據庫,感興趣的朋友可以了解下
    2020-09-09
  • MySql比較運算符正則式匹配REGEXP的詳細使用詳解

    MySql比較運算符正則式匹配REGEXP的詳細使用詳解

    這篇文章主要介紹了MySql比較運算符正則式匹配REGEXP的詳細使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • 對MySQL幾種聯合查詢的通俗解釋

    對MySQL幾種聯合查詢的通俗解釋

    這篇文章主要介紹了LEFT JOIN 關鍵字會從左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中沒有匹配的行。下面給個通俗的解釋吧
    2015-01-01
  • Mysql添加、刪除、主鍵(外鍵)方法詳細講解

    Mysql添加、刪除、主鍵(外鍵)方法詳細講解

    MySQL是一種廣泛使用的開源關系型數據庫管理系統(tǒng),在數據庫設計中主鍵和外鍵是兩個重要的概念,下面這篇文章主要給大家介紹了關于Mysql添加、刪除、主鍵(外鍵)方法的相關資料,需要的朋友可以參考下
    2024-06-06
  • xampp修改mysql默認密碼的方法

    xampp修改mysql默認密碼的方法

    在這里介紹xampp修改mysql默認密碼的大概過程是先利用xampp的phpmyadmin進入修改mysql密碼,修改之后我們再修改xampp中phpmyadmin的密碼,這樣就完整的修改mysql默認密碼了,感興趣的朋友一起通過本文學習吧
    2016-10-10

最新評論

阳朔县| 繁峙县| 吴川市| 定安县| 沙坪坝区| 沾化县| 青浦区| 安仁县| 郎溪县| 科尔| 澄江县| 芷江| 余江县| 连城县| 扬州市| 湖州市| 赤水市| 尼勒克县| 天津市| 驻马店市| 德兴市| 成都市| 岳普湖县| 泸水县| 永顺县| 博爱县| 张家港市| 绥江县| 凯里市| 怀安县| 尉氏县| 东莞市| 黑水县| 苏尼特右旗| 扎鲁特旗| 怀安县| 潼南县| 余干县| 铜梁县| 阿克| 泾川县|