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

淺談mysql數(shù)據(jù)庫(kù)事物隔離級(jí)別

 更新時(shí)間:2023年05月25日 10:24:56   作者:幸福的小雨  
本文主要介紹了淺談mysql數(shù)據(jù)庫(kù)事物隔離級(jí)別,數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別有4個(gè),這四個(gè)級(jí)別可以逐個(gè)解決臟讀 、不可重復(fù)讀 、幻讀這幾類問(wèn)題,本文就詳細(xì)的介紹一下,感興趣的可以了解一下

 一、數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別

數(shù)據(jù)庫(kù)事務(wù)的隔離級(jí)別有4個(gè),由低到高依次為Read uncommitted(讀未提交) 、Read committed(讀已提交) 、Repeatable read(重復(fù)讀) 、Serializable(序列化) ,這四個(gè)級(jí)別可以逐個(gè)解決臟讀 、不可重復(fù)讀 、幻讀這幾類問(wèn)題。

Read UnCommitted(讀未提交)
最低的隔離級(jí)別。一個(gè)事務(wù)可以讀取另一個(gè)事務(wù)并未提交的更新結(jié)果。

Read Committed(讀提交)
大部分?jǐn)?shù)據(jù)庫(kù)采用的默認(rèn)隔離級(jí)別。一個(gè)事務(wù)的更新操作結(jié)果只有在該事務(wù)提交之后,另一個(gè)事務(wù)才可以的讀取到同一筆數(shù)據(jù)更新后的結(jié)果。

Repeatable Read(重復(fù)讀)
mysql的默認(rèn)級(jí)別。整個(gè)事務(wù)過(guò)程中,對(duì)同一筆數(shù)據(jù)的讀取結(jié)果是相同的,不管其他事務(wù)是否在對(duì)共享數(shù)據(jù)進(jìn)行更新,也不管更新提交與否。

Serializable(序列化)
最高隔離級(jí)別。所有事務(wù)操作依次順序執(zhí)行。注意這會(huì)導(dǎo)致并發(fā)度下降,性能最差。通常會(huì)用其他并發(fā)級(jí)別加上相應(yīng)的并發(fā)鎖機(jī)制來(lái)取代它。

二、不同事務(wù)級(jí)別帶來(lái)的并發(fā)問(wèn)題

臟讀

臟讀發(fā)生在一個(gè)事務(wù)A讀取了被另一個(gè)事務(wù)B修改,但是還未提交的數(shù)據(jù)。假如B回退,則事務(wù)A讀取的是無(wú)效的數(shù)據(jù)。這跟不可重復(fù)讀類似,但是第二個(gè)事務(wù)不需要執(zhí)行提交。

總結(jié):事務(wù)1讀取了事務(wù)2修改但未被提交的數(shù)據(jù),稱之為臟讀。

不可重復(fù)讀

在基于鎖的并行控制方法中,如果在執(zhí)行select時(shí)不添加讀鎖,就會(huì)發(fā)生不可重復(fù)讀問(wèn)題。在多版本并行控制機(jī)制中,當(dāng)一個(gè)遇到提交沖突的事務(wù)需要回退但卻被釋放時(shí),會(huì)發(fā)生不可重復(fù)讀問(wèn)題。

在上面這個(gè)例子中,事務(wù)2提交成功,它所做的修改已經(jīng)可見(jiàn)。然而,事務(wù)1已經(jīng)讀取了一個(gè)其它的值。在序列化和可重復(fù)讀的隔離級(jí)別中,數(shù)據(jù)庫(kù)管理系統(tǒng)會(huì)返回舊值,即在被事務(wù)2修改之前的值。在提交讀和未提交讀隔離級(jí)別下,可能會(huì)返回被更新的值,這就是“不可重復(fù)讀”。

有兩個(gè)策略可以防止這個(gè)問(wèn)題的發(fā)生:
(1) 推遲事務(wù)2的執(zhí)行,直至事務(wù)1提交或者回退。這種策略在使用鎖時(shí)應(yīng)用。
(2) 而在多版本并行控制中,事務(wù)2可以被先提交。而事務(wù)1,繼續(xù)執(zhí)行在舊版本的數(shù)據(jù)上。當(dāng)事務(wù)1終于嘗試提交時(shí),數(shù)據(jù)庫(kù)會(huì)檢驗(yàn)它的結(jié)果是否和事務(wù)1、事務(wù)2順序執(zhí)行時(shí)一樣。如果是,則事務(wù)1提交成功。如果不是,事務(wù)1會(huì)被回退。

總結(jié):當(dāng)事物2修改的數(shù)據(jù)已被提交(commited),但還未被設(shè)置到可重復(fù)讀狀態(tài)時(shí)。事物1讀取的數(shù)據(jù)還是舊版本數(shù)據(jù),稱之為不可重復(fù)讀。

幻讀

幻讀發(fā)生在當(dāng)兩個(gè)完全相同的查詢執(zhí)行時(shí),第二次查詢所返回的結(jié)果集跟第一個(gè)查詢不相同。發(fā)生的情況:沒(méi)有范圍鎖。

總結(jié):當(dāng)事物1讀取數(shù)據(jù)后,事物2插入了一條信息,這時(shí)事物1再讀取數(shù)據(jù),發(fā)現(xiàn)第一次讀取的數(shù)據(jù)和第二次讀取的數(shù)據(jù)不一致稱之為幻讀。

三、不可重復(fù)讀和幻讀比較

不可重復(fù)讀

不可重復(fù)讀的重點(diǎn)是修改: 同樣的條件, 你讀取過(guò)的數(shù)據(jù), 再次讀取出來(lái)發(fā)現(xiàn)值不一樣了

例子:

在事務(wù)1中,Mary 讀取了自己的工資為1000,操作并沒(méi)有完成

con1 = getConnection();  
select salary from employee empId ="Mary";  

在事務(wù)2中,這時(shí)財(cái)務(wù)人員修改了Mary的工資為2000,并提交了事務(wù).

con2 = getConnection();  
update employee set salary = 2000;  
con2.commit(); 

在事務(wù)1中,Mary 再次讀取自己的工資時(shí),工資變?yōu)榱?000

select salary from employee empId ="Mary"; 

在一個(gè)事務(wù)中前后兩次讀取的結(jié)果并不致,導(dǎo)致了不可重復(fù)讀。

幻讀

幻讀的重點(diǎn)在于新增或者刪除 (數(shù)據(jù)條數(shù)變化)。同樣的條件, 第1次和第2次讀出來(lái)的記錄數(shù)不一樣

例子:

目前工資為1000的員工有10人。
事務(wù)1,讀取所有工資為1000的員工。

con1 = getConnection();  
select * from employee where salary =1000;  

共讀取10條記錄

這時(shí)另一個(gè)事務(wù)向employee表插入了一條員工記錄,工資也為1000

con2 = getConnection();  
Insert into employee(empId,salary) values("Lili",1000);  
con2.commit();  

事務(wù)1再次讀取所有工資為1000的員工

select * from employee where salary =1000; 

共讀取到了11條記錄,這就像產(chǎn)生了幻讀。

到此這篇關(guān)于淺談mysql數(shù)據(jù)庫(kù)事物隔離級(jí)別的文章就介紹到這了,更多相關(guān)mysql事物隔離級(jí)別內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL多表關(guān)聯(lián)查詢相關(guān)練習(xí)題

    MySQL多表關(guān)聯(lián)查詢相關(guān)練習(xí)題

    這篇文章主要給大家介紹了關(guān)于MySQL多表關(guān)聯(lián)查詢的相關(guān)資料,在MySQL中JOIN語(yǔ)句是實(shí)現(xiàn)多表關(guān)聯(lián)查詢的關(guān)鍵,它可以將多個(gè)表格中符合條件的數(shù)據(jù)連接在一起,從而提供一個(gè)完整的查詢結(jié)果,需要的朋友可以參考下
    2023-10-10
  • MySQL8.0.23安裝超詳細(xì)教程

    MySQL8.0.23安裝超詳細(xì)教程

    這篇文章主要介紹了MySQL8.0.23安裝超詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 基于Mysql存儲(chǔ)引擎的深入分析

    基于Mysql存儲(chǔ)引擎的深入分析

    本篇文章是對(duì)Mysql存儲(chǔ)引擎進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法

    MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法

    這篇文章主要介紹了MySQL為什么要避免大事務(wù)以及大事務(wù)解決的方法,幫助大家更好的理解和學(xué)習(xí)MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL查看鎖表的實(shí)現(xiàn)步驟

    MySQL查看鎖表的實(shí)現(xiàn)步驟

    在MySQL數(shù)據(jù)庫(kù)中,當(dāng)多個(gè)事務(wù)同時(shí)請(qǐng)求對(duì)同一行數(shù)據(jù)進(jìn)行修改時(shí),就會(huì)發(fā)生鎖表現(xiàn)象,本文主要介紹了MySQL查看鎖表的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • MySQL數(shù)據(jù)庫(kù)之?dāng)?shù)據(jù)表操作

    MySQL數(shù)據(jù)庫(kù)之?dāng)?shù)據(jù)表操作

    這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)之?dāng)?shù)據(jù)表操作,文章基于MySQL數(shù)據(jù)庫(kù)的相關(guān)資料展開詳細(xì)的數(shù)據(jù)表操作的詳情,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • MySQL數(shù)據(jù)庫(kù)的多種連接方式以及實(shí)用工具

    MySQL數(shù)據(jù)庫(kù)的多種連接方式以及實(shí)用工具

    mysql連接操作是客戶端進(jìn)程與mysql數(shù)據(jù)庫(kù)實(shí)例進(jìn)程進(jìn)行通信,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)的多種連接方式以及實(shí)用工具的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • mysql如何定時(shí)自動(dòng)新增分區(qū)

    mysql如何定時(shí)自動(dòng)新增分區(qū)

    這篇文章主要介紹了mysql如何定時(shí)自動(dòng)新增分區(qū)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • mysql存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例

    mysql存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例

    使用MYSQL存儲(chǔ)過(guò)程,可以實(shí)現(xiàn)諸多的功能,下面將為您介紹一個(gè)MYSQL存儲(chǔ)過(guò)程中使用游標(biāo)的實(shí)例
    2014-01-01
  • MySQL按時(shí)間進(jìn)行表分區(qū)的方法代碼

    MySQL按時(shí)間進(jìn)行表分區(qū)的方法代碼

    本文介紹如何在MySQL中創(chuàng)建按月份分區(qū)的表,并通過(guò)修改配置文件或使用數(shù)據(jù)庫(kù)事件來(lái)實(shí)現(xiàn)自動(dòng)分區(qū),文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-09-09

最新評(píng)論

宜兴市| 阳新县| 灵川县| 乌鲁木齐市| 连南| 儋州市| 扶沟县| 兴和县| 佛教| 丰顺县| 苗栗县| 拉萨市| 永安市| 铁岭市| 灵台县| 大安市| 内江市| 平山县| 靖江市| 汝城县| 宁城县| 锦屏县| 南投市| 金阳县| 宕昌县| 兰坪| 双辽市| 濮阳县| 韩城市| 井陉县| 铜山县| 宁城县| 海南省| 林西县| 麻阳| 正安县| 湄潭县| 阿拉善左旗| 山丹县| 通化县| 若羌县|