1. 程式人生 > >悲觀鎖和樂觀鎖的簡單瞭解

悲觀鎖和樂觀鎖的簡單瞭解

悲觀鎖:悲觀鎖是由資料庫提供的,用於防止資料庫併發控制造成的異常。

  實現悲觀鎖:在要進行加鎖的事務中的sql語句末加上 for update。

  悲觀鎖正如他的名字一樣,比較悲觀,他在加鎖過程中,不允許任何事務進行查詢或增刪改。

 

 

 

樂觀鎖:樂觀鎖是由邏輯思維實現的,也是用於防止併發控制。

    實現樂觀鎖:需要在資料表中加一個物理列version,還需要在加鎖的sql語句加上where條件(根據你的id和version的值進行判斷)。 

 SET autocommit=0;
START TRANSACTION;

UPDATE stock SET scount=scount-10,
`version`=`VERSION`+0.1 
WHERE sid=1 AND `version`=1.1
SELECT * FROM stock;
COMMIT;   樂觀鎖和他的名字也一樣,他在加鎖過程中,執行事務進行檢視,但不允許進行增刪改。      兩者的優缺點:悲觀鎖比較安全,但是資費耗費比較大。        樂觀鎖效能比較好,但是安全性低,容易死鎖。    兩者可以分場景使用。