国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:3日期: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
    相關文章:
    主站蜘蛛池模板: 久久精品国产免费观看99 | 欧美日韩视频一区三区二区 | 欧美有码在线观看 | 91aaa免费免费国产在线观看 | 国产精品正在播放 | 欧美性毛片大片 | 欧美性f| 国产一级二级三级毛片 | 国产精品久久久久久久久久98 | 久久久国产99久久国产首页 | 日韩在线免费视频 | 久久精品国产免费中文 | 国产日产久久 | 一区二区三区免费在线观看 | 亚洲爱视频 | 国内精品七七久久影院 | 久久国产精品二国产精品 | 成人亚洲欧美日韩中文字幕 | 999国产精品亚洲77777 | 国产美女作爱全过程免费视频 | 国产欧美久久久精品 | 欧美色视频日本片高清在线观看 | 免费观看性欧美毛片 | 高清在线观看自拍视频 | 欧美激情欧美狂野欧美精品免费 | 在线播放精品 | 国产成人精品视频频 | 亚洲国产欧美视频 | 精品一久久香蕉国产线看观 | 国产成人爱片免费观看视频 | 欧美久草视频 | 国产在线观看精品香蕉v区 国产在线观看免费人成小说 | 乱子伦农村xxxx | 日韩a毛片免费全部播放完整 | 亚洲精品第五页中文字幕 | 国产成人福利视频网站 | 日本加勒比视频在线观看 | 成人性色生活影片 | 久久久久免费精品国产 | 一级做a爰片久久毛片人呢 一级做a爰片久久毛片唾 | 色综合久久88色综合天天 |