基於資料庫實現分布式鎖

2021-10-08 01:25:54 字數 327 閱讀 8405

多個程序、多個執行緒訪問共同元件資料庫.

通過selec.....for update訪問同一條資料

for update鎖定資料,其他執行緒只能等待

此時只有乙個操作可以對資料進行修改,而其他人不能夠對該資料進行修改操作,但可以檢視

select * from distribute_ lock where business code='demo' for update;

commit;

優點:簡單方便、易於理解、易於操作

缺點:併發量大時,對資料庫壓力較大

建議:作為鎖的資料庫與業務資料庫分開

基於資料庫的分布式鎖實現

一 基於資料庫表 要實現分布式鎖,最簡單的方式可能就是直接建立一張鎖表,然後通過操作該表中的資料來實現了。當我們要鎖住某個方法或資源的時候,我們就在該表中增加一條記錄,想要釋放鎖的時候就刪除這條記錄。建立這樣一張資料庫表 create table methodlock id int 11 not n...

基於資料庫的分布式鎖實現

一 基於資料庫表 要實現分布式鎖,最簡單的方式可能就是直接建立一張鎖表,然後通過操作該表中的資料來實現了。當要鎖住某個方法或資源的時候,就在該表中增加一條記錄,想要釋放鎖的時候就刪除這條記錄。建立這樣一張資料庫表 create table methodlock id int 11 not null ...

分布式鎖 資料庫實現

select 檢索出的資料,for update 加上了一把鎖,其他的人是不能修改這個資料的,也不能在給這個資料加鎖。其他執行緒可以檢索出來,但是我在用 for update 再給這些資料加鎖是加不上的,因為這個鎖呢,已經被前乙個執行緒給鎖住了。其他人是不能給它加鎖的,在加鎖的期間,其他人也不能修改...