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

深入解析MySQL?事務

 更新時間:2022年01月19日 16:50:11   作者:小寫丶H  
這篇文章主要給大家分享的是mysql事務解析,事務(transaction)是業(yè)務邏輯的一個基本的單元組成,下面文章圍繞mysql事務的相關資料展開詳細內(nèi)容,需要的朋友可以參考一下希望對大家有所幫助

事務指邏輯上的一組操作,組成這組操作的各個單元,要么全部成功,要么全部失敗。

事務的四大特性 ( ACID )

原子性(Atomicity):一個事物是一個不可分割的單位,要么全都執(zhí)行,要么都不執(zhí)行;

一致性(Consistency):事務執(zhí)行前后,數(shù)據(jù)處于合法的狀態(tài);

持久性(Isolation):事務執(zhí)行完后,數(shù)據(jù)的修改是持久的,不會因為其他操作或故障而對其產(chǎn)生影響;

隔離性(Durability):多個事務并發(fā)執(zhí)行的,事務之間不互相干擾。

假如事物的一個操作整體(動作A,B),動作A,執(zhí)行完了,動作B,執(zhí)行到一半,執(zhí)行過程出錯,這時怎么辦?有回滾機制,有個日志會記錄這些操作,記錄數(shù)據(jù)修改前和數(shù)據(jù)修改后的值。

臟讀

事務A正在修改數(shù)據(jù)(但是沒有提交),事務B就讀取了這里的數(shù)據(jù),此時事務B讀取的操作稱為臟讀。 解決辦法:給寫操作加鎖,當事務A在寫數(shù)據(jù)的時候,事務B無法讀取。

不可重復讀

事務A修改數(shù)據(jù)之后提交了數(shù)據(jù)“name=L”,然后事務B就讀取數(shù)據(jù),但是此時A覺得修改的數(shù)據(jù)不滿意“name=H”,繼續(xù)修改提交了,此時事務B再次讀取,發(fā)現(xiàn),啊,怎么數(shù)據(jù)不一樣了。這就是不可重復讀的問題。 解決辦法:給寫操作加鎖的同時,給讀操作也加鎖,當事務A在寫的時候,事務B不可以讀,事物B在讀的時候,事物A也不可以寫。

幻讀

雖然已經(jīng)給寫操作加鎖,和讀操作加鎖,但是會有種情況,事務B在讀的時候,事務A無法修改name,但是事務A可以再寫一個age,當事務B再次讀取數(shù)據(jù)的時候發(fā)現(xiàn),咦,怎么多了條數(shù)據(jù)。 解決辦法:只能嚴格的串行化執(zhí)行。(并發(fā)程度最低,效率也最低,但是數(shù)據(jù)的可靠性最高)

這里很容易搞混不可重復讀和幻讀。其實只需要理解,不可重復讀是修改數(shù)據(jù),數(shù)據(jù)的條數(shù)不變;幻讀是增加或者刪除數(shù)據(jù),數(shù)據(jù)的內(nèi)容不變,條數(shù)發(fā)生改變。

MySQL的隔離級別

讀未提交(read-uncommitted):會有臟讀,不可重復讀,幻讀問題 不可重復讀(read-committed):會有不可重復讀,幻讀問題 可重復讀(repeatable-read):會有幻讀問題 串行化 (serializable):解決這三個問題

事務的隔離級別并不是越高越好,但事務的隔離級別越高,那么并發(fā)性就越低,效率越低,數(shù)據(jù)的可靠性就會越高。

MySQL8開始,用SELECT@@GLOBAL.transaction_isolation,@@transaction_isolation;查詢隔離級別(這里是是MySQL5)

這里我們可以看到MySQL的全局隔離級別和當前會話隔離級別皆是REPEATABLE一READ(可重復讀),不同的數(shù)據(jù)庫有不同的默認隔離級別,而且我們也可以自行修改它。

通過如下命令可以修改隔離級別(建議在修改時修改當前 session 隔離級別即可,不用修改全局的隔離級別):

SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

注意,如果只是修改了當前 session 的隔離級別,則換一個 session 之后,隔離級別又會恢復到默認的隔離級別,所以我們測試時,修改當前 session 的隔離級別即可。

到此這篇關于深入解析MySQL 事務的文章就介紹到這了,更多相關MySQL 事務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL死鎖解析與解決方法

    MySQL死鎖解析與解決方法

    在數(shù)據(jù)庫管理中,死鎖是一種常見而又棘手的問題,當多個事務相互等待對方釋放鎖資源時,死鎖就會發(fā)生,本文將介紹MySQL中死鎖產(chǎn)生的原因、如何查詢死鎖,以及解決死鎖的方法,需要的朋友可以參考下
    2024-01-01
  • MySQL 5.5主從同步設置筆記分享

    MySQL 5.5主從同步設置筆記分享

    這篇文章主要介紹了MySQL 5.5主從同步設置筆記分享,需要的朋友可以參考下
    2014-05-05
  • MySql COALESCE函數(shù)使用方法代碼案例

    MySql COALESCE函數(shù)使用方法代碼案例

    這篇文章主要介紹了MySql COALESCE函數(shù)使用方法代碼案例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 在MySQL中使用子查詢和標量子查詢的基本操作教程

    在MySQL中使用子查詢和標量子查詢的基本操作教程

    這篇文章主要介紹了在MySQL中使用子查詢和標量子查詢的基本操作教程,子查詢的使用時MySQL入門學習中的基礎知識,需要的朋友可以參考下
    2015-12-12
  • MySQL數(shù)據(jù)庫子查詢?sub?query

    MySQL數(shù)據(jù)庫子查詢?sub?query

    這篇文章主要介紹了MySQL數(shù)據(jù)庫子查詢?sub?query,子查詢指嵌套查詢下層的程序模塊,當一個查詢是另一個查詢的條件的時候,更多相關內(nèi)容需要的小伙伴可以參考一下下面文章內(nèi)容介紹
    2022-06-06
  • Mysql如何優(yōu)化查詢速度

    Mysql如何優(yōu)化查詢速度

    這篇文章主要介紹了Mysql如何優(yōu)化查詢速度問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql binlog日志自動清理及手動刪除

    mysql binlog日志自動清理及手動刪除

    本文主要介紹了mysql binlog日志自動清理及手動刪除,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • 一文帶你理解慢SQL分析與優(yōu)化

    一文帶你理解慢SQL分析與優(yōu)化

    從系統(tǒng)設計角度看,一個系統(tǒng)從設計搭建到數(shù)據(jù)逐步增長,SQL執(zhí)行效率可能會出現(xiàn)劣化,為繼續(xù)支撐業(yè)務發(fā)展,我們需要對慢SQL進行分析和優(yōu)化,下面這篇文章主要給大家介紹了關于慢SQL分析與優(yōu)化的相關資料,需要的朋友可以參考下
    2022-08-08
  • MySQL 編碼機制

    MySQL 編碼機制

    一般在MYSQL使用中文查詢 都是用 set NAMES character
    2008-12-12
  • Mysql避免重復插入數(shù)據(jù)的4種方式

    Mysql避免重復插入數(shù)據(jù)的4種方式

    這篇文章主要介紹了Mysql避免重復插入數(shù)據(jù)的4種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02

最新評論

青川县| 怀仁县| 商水县| 南雄市| 西乡县| 桦南县| 双牌县| 阳春市| 马关县| 阿合奇县| 广州市| 河北省| 武宣县| 旬阳县| 革吉县| 思茅市| 稻城县| 三亚市| 政和县| 昌图县| 晴隆县| 平度市| 黎城县| 南丰县| 隆尧县| 武夷山市| 金秀| 绵阳市| 德化县| 左权县| 浮山县| 桓仁| 揭阳市| 西藏| 新龙县| 宁南县| 花垣县| 辽阳县| 南川市| 瑞安市| 曲麻莱县|