danlock鎖 mysql 鎖機制

2021-10-13 06:11:18 字數 1088 閱讀 9737

鎖的基本型別

資料庫上的操作可以歸納為兩種:讀和寫。

多個事務同時讀取乙個物件的時候,是不會有衝突的。同時讀和寫,或者同時寫才會產生衝突。因此為了提高資料庫的併發效能,通常會定義兩種鎖:共享鎖和排它鎖。

使用的是innodb資料庫, 兩種鎖

1.共享鎖 (s鎖):表示對資料進行讀操作。因此多個事務可以同時為乙個物件加共享鎖。(如果試衣間的門還沒被鎖上,顧客都能夠同時進去參觀)

又稱讀鎖,若事務t對資料物件a加上s鎖,則事務t可以讀a但不能修改a,其他事務只能再對a加s鎖,而不能加x鎖,直到t釋放a上的s鎖。這保證了其他事務可以讀a,但在t釋放a上的s鎖之前不能對a做任何修改。

產生共享鎖的sql:

begin;

sql:select * from ad_plan lock inshare mode;commit

sequelize:

try );

const platformresult=await this.ctx.model.platforminfo.findone(

,transaction,

lock:transaction.lock.share,

awaittransaction.commit();

} catch(error) );

const platformresult=await this.ctx.model.platforminfo.findone(

,transaction,

lock:transaction.lock.update,

awaittransaction.commit();

} catch(error) {

awaittransaction.rollback();

排他鎖使用場景,

平台分數記錄在對應的平台資料中,每次平台中的玩家上分下分都會對平台分數進行操作

操作過程:

1.讀出平台分數

2.判斷平台剩餘分數是否可以進行上下分操作

3.增加減少平台分數

該過程中,如果查詢出平台分數,還沒有進行上下分處理。此時併發又來同樣操,則會出現資料錯誤的併發問題.現再讀取平台分數的時候加排他鎖,不讓其他人進行操作。

mysql 隱式鎖和顯示鎖 MySQL的鎖機制

2 解鎖階段 當事務釋放了乙個封鎖以後,事務進入解鎖階段,在該階段只能進行解鎖操作不能再進行加鎖操作。5 隱式和顯示鎖定 innodb會根據隔離級別在需要的時候自動加鎖,這稱為隱式加鎖。另外,innodb也支援通過特定的語句進行顯示加鎖 顯示加共享鎖 select lock in share mod...

鎖 JDK鎖 redis鎖 mysql鎖

在減庫存的 外麵包一層synchronized public string deductstock else 雙重檢查單例模式 public class singletontype6 public static singletontype6 getinstance return instance 利...

mysql會話鎖 Mysql鎖機制 寫鎖

1 準備資料 1.1 建表 1.1.1 建立 employee表 drop table if existsemployee create table if not existsemployee idint primary keyauto increment,namevarchar 40 dept i...