欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL可重復(fù)讀隔離級別下開啟事務(wù)的問題解決

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

1.前言

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

但事務(wù)的使用也有一些注意事項(xiàng),不注意的話,可能會帶來意料之外的結(jié)果。

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

2.問題引出

我們都知道,rr級別下,是根據(jù)快照來讀取數(shù)據(jù)的,所以他能保證同一事務(wù)內(nèi)的兩次讀取是一致的,不會因?yàn)槠渌聞?wù)提交的修改而導(dǎo)致前后讀取結(jié)果不一樣。

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

在這里插入圖片描述

開啟兩個會話,一個會話開啟一個事務(wù),另一個會話開啟一個事務(wù)并修改一行數(shù)據(jù)

在這里插入圖片描述

在這里插入圖片描述

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

但實(shí)際上,我們卻發(fā)現(xiàn),第二個事務(wù)的修改影響到了第一個事務(wù)的結(jié)果。

在這里插入圖片描述

3.原因

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

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

start transaction with consistent snapshot;

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

官網(wǎng)對于with consistent snapshot的介紹如下:

在這里插入圖片描述

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

官網(wǎng)對rr的介紹如下:

在這里插入圖片描述

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

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

您可能感興趣的文章:

相關(guān)文章

  • MySQL sleep函數(shù)使用方法詳解

    MySQL sleep函數(shù)使用方法詳解

    sleep函數(shù)時「延時」指定時間(單位秒),也就是讓程序停止執(zhí)行一段指定的時間,本文就給大家簡單的介紹一下MySQL sleep函數(shù)使用方法,需要的朋友可以參考下
    2023-07-07
  • MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程

    MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程

    這篇文章主要介紹了MySQL中LIKE子句相關(guān)使用的學(xué)習(xí)教程,LIKE子句一般用于WHERE語句中,需要的朋友可以參考下
    2015-12-12
  • 一次MySQL啟動導(dǎo)致的事故實(shí)戰(zhàn)記錄

    一次MySQL啟動導(dǎo)致的事故實(shí)戰(zhàn)記錄

    這篇文章主要給大家介紹了一次MySQL啟動導(dǎo)致的事故實(shí)戰(zhàn)記錄,記錄了MySQL 啟動成功但未監(jiān)聽端口的解決方法,文中給出了詳細(xì)的解決方法,需要的朋友可以參考下
    2021-09-09
  • CentOS7下mysql 8.0.16 安裝配置方法圖文教程

    CentOS7下mysql 8.0.16 安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了CentOS7下mysql 8.0.16 安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • MySQL連接異常報10061錯誤問題解決

    MySQL連接異常報10061錯誤問題解決

    這篇文章主要介紹了MySQL連接異常報10061錯誤問題解決,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 使用FriendFeed來提升MySQL性能的方法

    使用FriendFeed來提升MySQL性能的方法

    這篇文章主要介紹了使用FriendFeed來提升MySQL性能的方法,用其來存儲無模式的數(shù)據(jù)從而能夠維護(hù)索引,需要的朋友可以參考下
    2015-06-06
  • MySQL 5.7.29 + Win64 解壓版 安裝教程圖文詳解

    MySQL 5.7.29 + Win64 解壓版 安裝教程圖文詳解

    這篇文章主要介紹了MySQL 5.7.29 + Win64 解壓版 安裝教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 深入解析MySQL索引的原理與優(yōu)化策略

    深入解析MySQL索引的原理與優(yōu)化策略

    MySQL索引是一種用于加速數(shù)據(jù)庫查詢的數(shù)據(jù)結(jié)構(gòu),它類似于書籍的目錄,能夠快速指導(dǎo)我們找到需要的信息。本文將帶你介紹MySQL索引的原理與優(yōu)化策略,感興趣的小伙伴可以參考閱讀
    2023-03-03
  • MySQL外鍵約束(FOREIGN KEY)的具體使用

    MySQL外鍵約束(FOREIGN KEY)的具體使用

    MySQL外鍵約束是表的一個特殊字段,經(jīng)常與主鍵約束一起使用,本文主要介紹了MySQL外鍵約束(FOREIGN KEY)的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • MySQL超詳細(xì)安裝配置超詳細(xì)圖文教程(親測有效)

    MySQL超詳細(xì)安裝配置超詳細(xì)圖文教程(親測有效)

    這篇文章詳細(xì)介紹了如何下載、配置和安裝MySQL,包括設(shè)置環(huán)境變量、初始化my.ini文件、開啟MySQL服務(wù)以及設(shè)置密碼,此外,還介紹了如何使用Navicat工具連接MySQL數(shù)據(jù)庫,感興趣的朋友跟隨小編一起看看吧
    2024-11-11

最新評論