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,能夠儘量避免髒讀,且有比較好的併發效能
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2682701/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql併發事務的常見問題MySql
- 關於ImageView的幾個常見問題View
- Mysql:常見問題MySql
- 關於HTTP和HTTPS常見問題HTTP
- 關於CleanMyMac常見問題與解答Mac
- 關於MySQL的知識點與面試常見問題都在這裡MySql面試
- MySQL 事務常見面試題總結 | JavaGuide 稽核中MySql面試題JavaGUIIDE
- mysql常見問題總結MySql
- 關於PaddleSharp GPU使用 常見問題記錄GPU
- 關於 MySQL 的巢狀事務MySql巢狀
- [個人筆記] 關於linux的常見問題合集筆記Linux
- 關於Java異常最常見的八大問題Java
- Mysql MHA部署-07常見問題MySql
- 業務分析中有關詞彙表的常見問題 - modernanalystNaN
- 業務規則的常見問題解答
- 關於程式碼簽名證書10個常見問題
- Mac有防火牆嗎?關於Mac防火牆常見的問題解答Mac防火牆
- 【謹記】關於“等級保護”工作的10個常見問題!
- 常見問題
- 開發過程中mysql常見問題MySql
- 關於分散式事務帶來的問題及解決方案分散式
- spring事務常見錯誤Spring
- 關於六西格瑪綠帶專案註冊的常見問題
- js常見問題JS
- Homestead 常見問題
- Apache 常見問題Apache
- Linux 常見問題Linux
- Git 常見問題Git
- PHP 常見問題PHP
- swiper常見問題
- Composer 常見問題
- HTML常見問題HTML
- Git常見問題Git
- 前端常見問題前端
- 【Nginx】常見問題Nginx
- ndk 常見問題
- CSS常見問題CSS
- nginx 常見問題Nginx