MySQL中鎖有多種類型,可以通過不同的鎖來實現不同的并發控制。其中比較常見的鎖包括:
1. 共享鎖(S鎖): 共享鎖是一種讀取鎖,允許多個事務同時讀取一條記錄,但不能進行修改操作。共享鎖的申請方式如下: SELECT ... LOCK IN SHARE MODE; 或者 SELECT ... FOR SHARE; 2. 排他鎖(X鎖): 排他鎖是一種寫入鎖,只允許一個事務對記錄進行修改、刪除等操作。申請方式如下: SELECT ... FOR UPDATE; 3. 記錄鎖: 記錄鎖是在事務中對具體某個記錄進行的鎖定,分為共享記錄鎖和排他記錄鎖,可以通過在WHERE條件中指定 FOR SHARE或FOR UPDATE來實現,用法和上面兩種鎖一樣。 4. 表鎖: 表鎖是對整張表進行鎖定,除了當前的事務只有其他事務也只能等待。MySQL中表鎖有兩種級別:表共享鎖 (Table Share Lock)和表排他鎖(Table Exclusive Lock)。申請方式如下: LOCK TABLES table_name [AS alias_name] lock_type; 5. 行級鎖: 行級鎖是針對一行記錄進行加鎖,不同于表鎖,行級鎖可以多個事務同時訪問同一張表的不同行數據,申請方式 也是通過FOR SHARE或FOR UPDATE指定。