引言
為什麼需要鎖(併發控制)?
在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。
典型的衝突有:
併發控制機制
悲觀鎖:假定會發生併發衝突,遮蔽一切可能違反資料完整性的操作。[1]
樂觀鎖:假設不會發生併發衝突,只在提交操作時檢查是否違反資料完整性。[1] 樂觀鎖不能解決髒讀的問題。
樂觀鎖:當乙個事務讀取資料後,要進行操作,在操作前 為資料加乙個版本資訊(version),當在操作期間有其他事物對改資料進行了操作,那麼版本資訊就會變
化,這樣當改事務執行結束後判斷一下版本資訊,如果沒變,那麼提交事務,如果改變了,那麼重複執行上述操作---這就是樂觀鎖的思想,很多地方用到這個思想,比如安卓的
資料庫sqlite就又到了version。
悲觀鎖:是當乙個事務對 資料進行操作的時候對資料加「鎖」,在此事務沒有提交之前,其他事務是不能操作該資料的,只有這個事務結束提交後,其他事物才能對它進行操作。
mysql中事務的隔離性
msql中事務的五個屬性 1 原子性 乙個事務是乙個不可分割的工作單位,要木全都做了,要木全都不做了 2 一致性 事物執行前後,資料處於合法狀態 3 永續性 事物執行完畢後,資料就被持久修改 寫到磁碟中了 4 隔離性 多個事物併發執行的時候,事物之間不能相互干擾 而在隔離性不強的情況下會產生三個情況...
MySQL事務 隔離性中的隔離級別
建表 create table student id int primary key,name varchar 100 engine innodb charset utf8 測試資料 insert into student values 1 張三 如果乙個事務讀到了另乙個未提交事務修改過的資料,那麼...
事務的原子性,一致性,隔離性,永續性
事務的原子性 事務的原子性指的是,事務中包含的程式作為資料庫的邏輯工作單位,它所做的對資料改操作要全部執行,要麼全部不執行。這種特性稱為原子性。事務的原子性要求,如果把乙個事務看作是乙個程式,它要麼完整的被執行,要麼完全執行。就是說事務的操縱序列或者完全應用到資料庫或者完全不影響資料庫。這種特性稱為...