您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關MySQL關于事務常見的問題都有哪些呢,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
所謂事務,是指一組相互依賴的操作單位的集合,用來保證對數據庫的正確修改,保持數據的完整性,如果 一個事務的某個單元操作失敗,將取消本次事務的全部操作。從理論上來說,事務彼此應該完全隔離,以避免并發事務所導致的問題,但是,這樣會對性能產生極大的影響,因為事務必須按順序運行,在實際開發中,為了提升性能,事務會以較低的隔離級別運行,事務的隔離級別可以通過隔離事務熟悉指定
事務的并發
臟讀:事務A讀取了事務B更新的數據,然后B回滾操作,A讀取到的是臟數據
不可重復讀:事務A多次讀取同一數據,事務B在事務A多次讀取的過程中,對數據做了更新并且提交,導致A多次讀取同一數據時,結果先后兩次讀到的數據結果不一致
幻讀:解決了不可重復讀,事務A對一個表中的所有的行的某個數據項做了修改,這時B有隊這個表插入了一行數據項,而這個數據項的數組還是原先的數值,A查看時看到的還是原來的數組,其實這是B添加的,就像幻覺一樣
事務的隔離級別
讀未提交:另一個事務修改了數據,但尚未提交,本事務中的SELECT會獨到這些違背提交的數據臟讀
不可重復讀:事務B在事務A多次讀取一個數據時對數據修改并提交,導致事務A多次讀取時,結果不一致
可重復讀:SELECT的結果是事務開始時間的狀態,因此,讀取到的結果是一致的,但是可能會有幻讀的現象
串行化:最高隔離級別,不會產生任何異常
MySQL的默認事務隔離級別為repeatableread
MySQL中默認事務隔離級別是“可重復讀”時并不會鎖住讀取到的行,寫數據會鎖住整張表
MySQL中事務級別為"未提交讀"時,寫數據只鎖住相應的行
MySQL中事務級別為“串行化”時,讀寫數據都會鎖住整張表
隔離級別越高,越能保證數據的完整性和一致性,但是對并發性能的影響也越大,對于大多數的應用程序來說,可以盡量把數據庫系統的隔離級別設為Read Committed,能夠盡量避免臟讀,且有比較好的并發性能
上述就是小編為大家分享的MySQL關于事務常見的問題都有哪些呢了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。