mysql事務更新丟失 關於事務和丟失更新

2021-10-19 19:02:51 字數 1596 閱讀 2113

1.1.1    事務的特性:(面試)

事務四大特性:

*原子性(atomicity)  :強調的事務的不可分割.

*一致性(consistency)    :強調的事務的執行前後,資料庫的的完整性保持一致.

*隔離性(isolation)  :強調的事務的併發的訪問,乙個事務的執行,不應該受到另乙個事務的打擾.

*永續性(durability) :強調的事務結束之後,資料就永久的儲存的資料庫中.

如果不考慮事務的隔離性:引發一些安全性問題.

*髒讀       :乙個事務,讀到了另乙個事務未提交資料.

*不可重複讀 :乙個事務,讀到了另乙個事務的提交資料(update).導致查詢結果不一致.

*虛讀(幻讀) :乙個事務,讀到了另乙個事務的提交資料(insert).導致查詢結果不一致

資料庫中事務的隔離級別:

* read uncommitted(未提交讀) :髒讀、不可重複讀、虛讀都是有可能發生的.

* read committed(已提交讀)   :避免髒讀,但是不可重複讀和虛讀是有可能發生的.

* repeatable read(重複讀)    :避免髒讀、不可重複讀.但是虛讀是有可能發生的.

* serializable(序列的)       :避免髒讀、不可重複讀、虛讀的發生.

*安全性:read uncommitted  

*效率:read uncommitted  > read committed  > repeatable read > serializable

*****資料庫會比對安全性和效率問題:一般不會採用read uncommitted和 serializable

* mysql資料庫預設的隔離級別:repeatable read

* oracle資料庫預設的隔離級別:read committed

mysql中做乙個事務操作,不想被別的事物操作打擾,就只能把隔離級別設定成序列化(serializable).這樣就是單執行緒.速度慢.

oracle中可以把隔離級別設定成自身固有的readonly隔離級別.

這種隔離級別可以查,不可以改.

面試問oracle有幾個隔離級別,答案有三個!

自身支援的兩個和乙個固有的readonly.

關於oracle支援的隔離級別:

1.1.2    jdbc中設定事務的隔離級別:

conn.settransactionisolation(int level) --- 設定事務的隔離級別.

1.1.13   丟失更新(擴充套件)

解決:1.悲觀鎖:假設丟失更新一定會存在,採用是資料庫一種鎖機制.(排他鎖)

2.樂觀鎖:假設丟失更新不一定存在,採用在資料庫中新增乙個字段完成.

悲觀鎖解決原理:

樂觀鎖解決原理:

關於事務 丟失更新

事務四大特性 原子性 atomicity 強調的事務的不可分割.一致性 consistency 強調的事務的執行前後,資料庫的的完整性保持一致.隔離性 isolation 強調的事務的併發的訪問,乙個事務的執行,不應該受到另乙個事務的打擾.永續性 durability 強調的事務結束之後,資料就永久...

關於事務和丟失更新

事務四大特性 原子性 atomicity 強調的事務的不可分割.一致性 consistency 強調的事務的執行前後,資料庫的的完整性保持一致.隔離性 isolation 強調的事務的併發的訪問,乙個事務的執行,不應該受到另乙個事務的打擾.永續性 durability 強調的事務結束之後,資料就永久...

關於事務和丟失更新

事務四大特性 原子性 atomicity 強調的事務的不可分割.一致性 consistency 強調的事務的執行前後,資料庫的的完整性保持一致.隔離性 isolation 強調的事務的併發的訪問,乙個事務的執行,不應該受到另乙個事務的打擾.永續性 durability 強調的事務結束之後,資料就永久...