亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

MySQL事務與隔離級別的使用基礎理論

瀏覽:4日期:2023-02-18 16:43:47
目錄
  • 什么是事務
  • 事務四大特性ACID
  • 并發事務問題
    • 臟讀
    • 不可重復讀
    • 幻讀
  • 事務隔離級別

    什么是事務

    事務就是一組操作的集合,事務將整組操作作為一個整體,共同提交或者共同撤銷

    這些操作只能同時成功或者同時失敗,成功即可提交事務,失敗就執行事務回滾

    MySQL的事務默認是自動提交的,一條語句執行成功,MySQL將會隱式的提交事務

    以轉賬為例,張三向李四轉賬1000元

    這個整體行為包含三個操作:首先查詢張三賬戶的余額,其次將張三賬戶余額-1000,最后將李四賬戶余額+1000。事務就是將這三個操作看作最小提交單元,就是一榮俱榮一損俱損。

    -- 查看事務管理狀態  1-自動  0-手動select @@autocommit;-- 設置事務手動管理set @@autocommit = 0;-- 開啟事務start transaction;-- 開啟事務:start transaction 或者 beginselect money from account where name = "張三";update account set money = money - 1000 where name = "張三";update account set money = money + 1000 where name = "李四";-- 事務提交commit;-- 事務回滾rollback;

    事務四大特性ACID

    原子性Atomicity:一組操作為最小執行單元,只能全部執行成功或者全部失敗

    一致性Consistency:事務完成后,所有數據都要保持一致狀態

    一致性表示事務完成后,數據操作前后符合邏輯運算,狀態一致

    隔離性Isolation:是指在并發操作數據庫時,各個事務之間不會相互影響

    持久性Durability:事務一旦提交或回滾,對于數據庫的修改將會永久保存

    并發事務問題

    臟讀

    兩個事務A和B在并發下操作數據庫中的同一數據時,當事務A對數據進行了修改但是還沒有commit的同時,事務B對該數據進行了select,此時事務B讀取到的數據就是不準確的。這種情況叫做臟讀

    事務B讀取到了事務A修改但還未提交的數據---->臟讀

    不可重復讀

    同樣事務AB并發下操作數據庫中同一數據,首先事務A對該數據進行查詢,查詢之后又進行了其他操作。與此同時,事務B執行了更新操作并且成功commit。那么當事務A再次對數據庫查詢的時候就會出現與上次讀取到的數據不一致的情況

    幻讀

    事務AB并發下操作數據庫中同一數據,事務A首先查詢了數據庫中是否有id=1的數據,沒有就插入。那么此時事務A未查詢到該數據存在,同時事務B執行了插入操作插入了id=1的數據并且提交。那么事務A再去插入的時候則會報主鍵沖突的錯誤,但是當事務A再一次去查的時候發現id=1的數據仍然是不存在( 前提是已經解決了不可重復讀的問題,一個事務多次訪問同一數據的結果是一致的 ),這種情況就稱之為幻讀

    事務隔離級別

    隔離級別

    隔離級別臟讀不可重復讀幻讀Read uncommitted(讀未提交)×××Read committed(oracle默認)(讀已提交)√××Repeatable Read(mysql默認)(可重復讀)√√×Serializable(可序化)√√√

    × --> 無法解決 √ --> 可以解決

    在sql中查看當前事務隔離級別

    select @@transaction_isolation;

    設置當前事務隔離級別

    -- 設置事務隔離級別set [session|global] transaction isolation level {Read uncommitted | Read committed | Repeatable Read |Serializable};

    session是指盡在當前會話中使用該事務隔離級別,global表示全局有效

    四種事務隔離級別當中,Serializable可序化級別最高。要求序列化執行sql指令,事務只能一個接一個的執行,不允許并發執行。性能低下

    而Read Uncommitted讀未提交性能最好,但是存在臟讀問題等

    到此這篇關于MySQL事務與隔離級別的使用基礎理論的文章就介紹到這了,更多相關MySQL事務與隔離級別內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: MySQL
    相關文章:
    主站蜘蛛池模板: 成人淫片免费视频95视频 | 成人性色生活片 | 精品欧美日韩一区二区 | 国产免费精彩视频 | 日韩欧美视频免费观看 | 福利片在线观看免费高清视频 | 亚洲国产精品aa在线看 | 亚洲欧美视频一区二区 | 爽爽爽爽爽爽a成人免费视频 | 久久精品国产精品亚洲人人 | 全免费a级毛片免费毛视频 全免费a级毛片免费看 | 国产各种盗摄视频 | 91自产国偷拍在线 | 一级毛片aaa| 欧洲成人爽视频在线观看 | 欧美特黄三级在线观看 | 丁香婷婷开心激情深爱五月 | 精品国模一区二区三区 | 青青青视频蜜桃一区二区 | 久久精品国产亚洲香蕉 | 嫩草网站永久入口 | 日韩久久精品一区二区三区 | 成人深夜福利在线播放不卡 | 国产精品成熟老女人 | 99在线精品免费视频 | 网站在线看| 亚洲一区二区天海翼 | 欧美曰韩一区二区三区 | 国产爱v| 碰碰碰免费公开在线视频 | 日韩 亚洲 制服 欧美 综合 | 久久精品国产久精国产果冻传媒 | 国产一级做a爰片在线看免费 | 国产精品成人在线播放 | 青草国产在线观看 | 久久久久女人精品毛片 | 外国黄色毛片 | 欧美亚洲h在线一区二区 | 国产成+人+亚洲+欧美+日韩 | 一区二区三区四区精品 | 亚洲激情 |