風哥雙OCP認證培訓(Oracle+MySQL)實戰(zhàn)
行級鎖
只在存儲引擎層實現(xiàn),而MySQL服務器層沒有實現(xiàn)。
并發(fā)性好,但鎖開銷大
3 事務
3.1 數(shù)據(jù)庫事務四特性
事務是指一組邏輯操作,它們要么一起成功,要么一起失敗。
ACID:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)
原子性:事務是一個不可分割的最小單元,事務中的操作要么都發(fā)生,要么都不發(fā)生。
一致性:如果事務執(zhí)行之前數(shù)據(jù)庫是一個完整的狀態(tài),那么事務結束后(無論事務是否執(zhí)行成功)數(shù)據(jù)庫仍然是一個完整的狀態(tài)。(DB中所有的數(shù)據(jù)都符合DB的約束規(guī)范)
隔離性:多個用戶并發(fā)訪問數(shù)據(jù)庫時,一個用戶的事務不能被其他用戶的事務所干擾,多個并發(fā)事務之間數(shù)據(jù)要相互隔離。
持久性:事務一旦被提交,它對數(shù)據(jù)庫的影響是永久性的
3.2 隔離級別
SQL標準定義了四種隔離級別:
隔離級別說明問題
讀未提交(Read Uncommitted)事務A可讀取事務B未提交的數(shù)據(jù)引發(fā) 臟讀
讀已提交(Read Committed)事務A只能讀取其它已提交事務的數(shù)據(jù);引發(fā) 不可重復讀
可重復讀(Repeatable Read)保證同一事務中多次讀取同樣的記錄的結果是一致的;Mysql默認事務隔離級別解決了臟讀;但引發(fā) 幻讀
可串行化(Serializable)強制事務串行執(zhí)行,在讀的每一行數(shù)據(jù)行上加鎖大量的超時和鎖競爭
臟讀:一個事務讀取了另外一個未提交事務數(shù)據(jù)
?