
【計】 shared lock
enjoy together; pool; share
【計】 share; sharing
【經】 pool
model; mould; type
【醫】 form; habit; habitus; pattern; series; Ty.; type
【經】 type
lock; lock up
【計】 lock stock and barrel
【醫】 lock
在計算機科學領域,共享型鎖(Shared Lock),也稱為讀鎖(Read Lock),是一種并發控制機制,允許多個事務或線程同時讀取同一資源(如數據庫記錄、文件),但禁止任何寫入操作,直到所有共享鎖釋放。其核心在于協調“讀-讀”并行與“讀-寫”互斥。
共享性(Shared)
多個線程可同時獲取共享鎖進行讀取操作,彼此不阻塞,确保數據讀取的高效并發性。
例:10個查詢線程可同時讀取同一數據塊。
排他性約束(Exclusive Constraint)
若資源被施加共享鎖,則無法再被授予排他鎖(Exclusive Lock, 寫鎖)。寫入操作需等待所有共享鎖釋放後才可進行,避免“髒讀”問題。
例:寫入線程需阻塞至所有讀取線程完成。
鎖兼容性(Lock Compatibility)
當前鎖狀态 | 請求共享鎖 | 請求排他鎖 |
---|---|---|
無鎖 | ✓ | ✓ |
共享鎖 | ✓ | ✗ |
排他鎖 | ✗ | ✗ |
數據庫管理系統(DBMS)
在SQL事務中,SELECT
語句默認使用共享鎖(如SQL Server的NOLOCK
除外),确保事務隔離級别(如Read Committed)下的數據一緻性。
參考:Oracle官方文檔《Database Concepts》
文件系統同步
多進程讀取同一配置文件時,操作系統通過共享鎖允許并發讀取,但寫入進程需等待鎖釋放。
參考:Microsoft《File Locking Mechanisms》
緩存系統
高并發讀場景下(如Redis),共享鎖優化讀取吞吐量,減少寫操作阻塞時間。
特性 | 共享型鎖(Shared Lock) | 排他鎖(Exclusive Lock) |
---|---|---|
并發讀取 | 允許多線程同時讀取 | 僅允許單線程訪問 |
并發寫入 | 禁止任何寫入 | 禁止其他讀寫操作 |
適用操作 | 數據查詢(SELECT) | 數據修改(INSERT/UPDATE/DELETE) |
資源占用目标 | 最大化讀取并發 | 保障數據寫入原子性 |
數據庫理論
“共享鎖支持事務在讀取期間防止其他事務修改數據,是實現‘讀已提交’隔離級别的關鍵。”
——《Database System Concepts》, Abraham Silberschatz 等(第7版)
操作系統原理
“讀寫鎖(Reader-Writer Locks)通過分離共享(讀)與獨占(寫)模式,優化共享資源的訪問效率。”
——《Operating System Concepts》, Galvin 等(第10版)
Java并發編程
ReentrantReadWriteLock
類的實現體現了共享鎖機制,readLock
允許多線程并發,writeLock
互斥。
參考:Oracle Java Docs
共享型鎖通過允許并行讀取+阻塞寫入的策略,在保障數據一緻性的前提下,顯著提升系統讀取性能,是解決“讀多寫少”場景并發沖突的核心設計範式。
共享型鎖(Shared Lock),又稱讀鎖(Read Lock),是數據庫系統中用于控制并發訪問的一種鎖機制。以下是其核心要點:
共享鎖允許多個事務同時讀取同一數據資源,但禁止任何事務在持有共享鎖期間修改數據。它通過保證數據在讀取時的穩定性,實現并發讀取的共享性。
共享性
多個事務可同時獲取同一數據的共享鎖,實現高并發讀取。例如:事務A和事務B可同時讀取同一行數據。
阻塞排他鎖
若某數據存在共享鎖,其他事務無法對其加排他鎖(寫鎖),直到所有共享鎖釋放。這确保了讀取過程中數據不被修改。
不可修改性
持有共享鎖的事務隻能讀取數據,不能修改數據。修改操作需先升級為排他鎖。
SELECT ... LOCK IN SHARE MODE
語句)。特性 | 共享鎖(S鎖) | 排他鎖(X鎖) |
---|---|---|
并發讀取 | ✅ 允許多個事務同時讀取 | ❌ 僅允許持有鎖的事務讀寫 |
并發寫入 | ❌ 禁止任何事務修改 | ✅ 僅持有鎖的事務可修改 |
兼容性 | 與其他共享鎖兼容 | 與其他所有鎖互斥 |
典型應用場景 | 高并發讀操作 | 數據修改操作 |
在MySQL中,可通過以下語句顯式加共享鎖:
SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE;
此時其他事務仍可讀取該數據,但無法執行更新或删除操作,直到當前事務提交或回滾。
保證債券成本目标設計醋羟脯氨酸代管款帶皮幹姜低錯位對外投資決策高溫裂解氣體格式表海上保險費哈瑙氏排涎器厚度檢驗晶蛭石集中控制兩栖的磷酸錳铵氯錫酸铷面積比密碼對話某硝酮模型結構膜整合錐貧混凝土前置尋孔紙起動泵肉桂酸铋薩氏按蚊水油法再生膠輸卵管卵巢炎