重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
下面講講關于MySQL的事務隔離級別可以解決什么問題,文字的奧妙在于貼近主題相關。所以,閑話就不談了,我們直接看下文吧,相信看完MySQL的事務隔離級別可以解決什么問題這篇文章你一定會有所受益。
十載的成縣網站建設經驗,針對設計、前端、開發、售后、文案、推廣等六對一服務,響應快,48小時及時工作處理。全網整合營銷推廣的優勢是能夠根據用戶設備顯示端的尺寸不同,自動調整成縣建站的顯示方式,使網站能夠適用不同顯示終端,在瀏覽器中調整網站的寬度,無論在任何一種瀏覽器上瀏覽網站,都能展現優雅布局與設計,從而大程度地提升瀏覽體驗。創新互聯公司從事“成縣網站設計”,“成縣網站推廣”以來,每個客戶項目都認真落實執行。
一、事務的原則
事務要滿足ACID原則,也就是:
1.原子性(Atomicity):事務開始后所有操作,要么全部做完,要么全部不做,不可能停滯在中間環節。事務執行過程中出錯,會回滾到事務開始前的狀態,所有的操作就像沒有發生一樣。也就是說事務是一個不可分割的整體。
2.一致性(Consistency):事務開始前和結束后,數據庫的完整性約束沒有被破壞 。比如A向B轉賬,不能出現A扣了錢,B卻沒收到。
3.隔離性(Isolation):同一時間,只允許一個事務請求同一數據,不同的事務之間彼此沒有任何干擾。比如A正在從一張銀行卡中取錢,在A取錢的過程結束前,B不能向這張卡轉賬。
4.持久性(Durability):事務完成后,事務對數據庫的所有更新將被保存到數據庫,不能回滾。
二、事務并發造成的問題
1.臟讀:事務A讀取了事務B更新的數據,然后B回滾操作,那么A讀取到的數據是臟數據。比如:
事務B把用戶的年齡更新成22歲,但是事務還未提交。此時事務A來讀用戶的年齡,讀到了22歲,然后去做自己的處理。之后事務B把用戶的年齡回滾到21歲。這個例子中事務A讀到的22歲就是臟數據。http://www.chacha8.cn/detail/1132398235.html
2.不可重復讀:事務 A 多次讀取同一數據,事務 B 在事務A多次讀取的過程中,對數據作了更新并提交,導致事務A多次讀取同一數據時,結果不一致。比如:
事務B先把用戶的余額更新為100元,事務A來讀的時候讀到的是100元,然后事務B又把余額更新為90元,此時事務A來讀的時候讀到的就是90元,也就是事務A讀到的數據前后不一致。
3.幻讀:事務A對表中的數據進行了修改,涉及到表中的全部行。同時,事務B也修改這個表中的數據,向表中插入一行新數據。那么,事務A發現表中還有自己沒有修改的行,就好象發生了幻覺一樣。比如:
A先把所有人的余額清零,同時,B往表中插入了一條余額為100的數據。A提交以后,發現竟然還有100的。就好像發生了幻覺一樣,這就叫幻讀。
三、MySQL的事務隔離級別
MySQL的事務隔離級別有四種:
1.讀未提交(read-uncommitted):能讀到未提交的數據。會出現臟讀、不可重復讀、幻讀。
2.讀已提交(read-committed):讀已提交的數據。會出現不可重復讀和幻讀。
3.可重復讀(repeatable-read):mysql默認的事務隔離級別,查詢的都是事務開始時的數據。只會出現幻讀。
4.串行讀(serializable):完全串行化讀,每次都會鎖表,讀寫互相阻塞。最高隔離級別,不會出現臟讀,不可重復讀,幻讀。但會大大影響系統的性能,一般不用。
對于以上MySQL的事務隔離級別可以解決什么問題相關內容,大家還有什么不明白的地方嗎?或者想要了解更多相關,可以繼續關注我們的行業資訊板塊。