Mysql 知識點
阿新 • • 發佈:2018-10-18
隔離級別 插入 mit oracl serializa 標記 tab 串行 臟讀
Isolation
隔離級別 | 臟讀(Dirty Read) | 不可重復讀(NonRepeatable Read) | 幻讀(Phantom Read) |
未提交讀(Read uncommitted) | 可能 | 可能 | 可能 |
已提交讀(Read committed) | 不可能 | 可能 | 可能 |
可重復讀(Repeatable read) | 不可能 | 不可能 | 可能 |
可串行化(Serializable) | 不可能 | 不可能 | 不可能 |
·未提交讀(Read Uncommitted):允許臟讀,也就是可能讀取到其他會話中未提交事務修改的數據
·提交讀(Read Committed):只能讀取到已經提交的數據。Oracle等多數數據庫默認都是該級別 (不重復讀)
·可重復讀(Repeated Read):可重復讀。在同一個事務內的查詢都是事務開始時刻一致的,InnoDB默認級別。在SQL標準中,該隔離級別消除了不可重復讀,但是還存在幻象讀
·串行讀(Serializable):完全串行化的讀,每次讀都需要獲得表級共享鎖,讀寫相互都會阻塞
排它鎖:
Record Lock:單純鎖定一行,ABC,更新B,鎖住B
Gap Lock:鎖定目標記錄周邊的記錄,ABC,更新B,鎖住AB、BC,防止在A與B和B與C中間插入記錄,防止幻讀
Next-key Lock:鎖定目標及周邊的記錄,ABC,更新B,鎖住AB、B、BC,防止在A與B和B與C中間插入記錄,防止幻讀
Mysql 知識點