只有多個事務併發時需要考慮併發事務
併發事務問題:
髒讀 (dirty read) :讀到另外一個事務未提交更新的數據,即讀到了髒數據。
不可重複讀 (unrepeatable read):對同一記錄的兩次讀取不一致,因爲另一事務對該記錄進行了修改。
幻讀 (虛讀) :對同一張表的兩次查詢不一致,因爲另一事務插入或刪除了一條記錄。
不可重複讀針對的是一個事務範圍內兩個相同的查詢卻返回了不同數據。
幻讀的重點在於新增或者刪除,第1次和第2次讀出來的記錄數不一樣。
隔離級別:
1 serializable(串行化)
*不會出現任何併發問題,因爲對同一數據的訪問是串行的,非併發訪問的。
*性能最差。
2 repeatable read (可重複讀)(MySql默認)
*防止髒讀和不可重複讀,不能處理幻讀問題。
*性能比serialiable好。
3 read commited (讀已提交數據)(Oracle默認)
*防止髒讀。
*性能比repeatable read好。
4 read uncommited (讀未提交數據)
*可能出現任何事務併發問題。
*性能最好。
MySql的隔離級別可以通過以下語句來查看
select @@tx_isolation
設置MySql的隔離級別
set transaction isolationlevel [4選1]