多使用者下的死鎖

2022-08-11 11:33:10 字數 1083 閱讀 3881

多使用者下的死鎖

概念:

在多個使用者同時操作一條資料的時候,如果前面乙個使用者更新了資料,但是沒有提交事務,

則後面乙個使用者不能操作當前資料,只有等待上乙個使用者提交事務之後才能進行操作.

悲觀鎖:

在資料庫中如果某個使用者在更新一條資料的時候會取得一把鎖,鎖住正在更新的資料,

這個鎖是當前使用者占有的,在當前使用者操作該資料的過程中,其他使用者不能操作該資料,在操作完成之後會釋放鎖(為該條資料釋放鎖)

釋放鎖之後其他使用者才能進行操作,這是一種悲觀鎖 (認為資料一定會出現安全問題,所以就要鎖定), 也是獨佔鎖 (與共享鎖是相對的),

那麼在什麼情況下任務資料操作完畢了呢?兩種情況: 提交事務, 事務回滾

樂觀鎖:

其實上資料庫提供的鎖機制是一種悲觀鎖,此外有樂觀鎖,樂觀鎖是通過控制版本號或者時間來實現的一種鎖機制,要結合程式才能實現

如何要讓查詢語句出現死鎖現象:

我們可以在查詢語句之後增加乙個關鍵字: "for update"

ex:

select * from myemp where empno=7369 for update;

悲觀鎖與樂觀鎖的區別:

悲觀鎖:

認為資料庫更新時一定會發生出衝突,因此需要對記錄加鎖,以保證資料的一致性.

因其為行級鎖,具有較好的效能,通常針對併發使用.

樂觀鎖:

認為資料庫不存在衝突,因此,需要再提交時保證資料一致性,如果不一致,則返回錯誤,

由程式本身的邏輯進行處理

樂觀鎖的實現主要有三種方式:

1.通過比較提交前後的資料是否發生變化來判斷是否存在資料衝突

2.通過在表中增加版本序列,來標示是否發生了變化

3.通過比對表的時間來判斷是否出現了版本變化

可以通過trigger 或儲存過程實現該樂觀鎖

linux的多使用者

linux繼承了unix的很大一部分東西,自設計開始就是多使用者的,那麼這個多使用者到底體現在什麼地方呢?多使用者和linux作業系統的設計又有何關聯呢?首先看看原始的多使用者,所謂多使用者就是有很多人公用一台機器,這在計算機開始的年代是很必要的,那個時候機器資源緊缺。於是一種對於計算機的新的使用方...

linux的多使用者

linux繼承了unix的很大一部分東西,自設計開始就是多使用者的,那麼這個多使用者到底體現在什麼地方呢?多使用者和linux作業系統的設計又有何關聯呢?首先看看原始的多使用者,所謂多使用者就是有很多人公用一台機器,這在計算機開始的年代是很必要的,那個時候機器資源緊缺。於是一種對於計算機的新的使用方...

Hadoop多使用者配置

0.hadoop多使用者配置的背景。hadoop多使用者配置的目的就是多個hadoop使用者可以共同使用hdfs,但是只能操作屬於自己的空間,不能跨使用者空間操作 當然 tmp是屬於大家的,任何使用者都會對這個資料夾有寫操作 hadoop多使用者配置,相當於給每個使用者乙個hadoop客戶端,每個使...