1. 程式人生 > >Mysql 知識點

Mysql 知識點

隔離級別 插入 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 知識點