MySQL資料庫用 FOR UPDATE 鎖定錶行

2021-07-25 06:01:07 字數 1150 閱讀 1426

mysql資料庫用 for update 鎖定錶行

for update 僅適用於 innodb,且必須在事務區塊(begin/commit)中才能生效。

使用及驗證步驟:

1. 使用begin開始乙個事務。

2. 利用 select * for update 鎖定行。

3. 在新視窗中驗證非選中行是否被鎖定----未被鎖定。

4. 在新視窗中驗證選中行是否被鎖定-----鎖定,update語句在等待了一段時間後失敗。

舉例:mysql> begin work;

query ok, 0 rows affected (0.00 sec)

mysql> select state from user where userid=303  for update;

+-------+

| state |

+-------+

|    92 |

+-------+

1 row in set (0.00 sec)

mysql> commit work;

query ok, 0 rows affected (0.02 sec)

對 for update 進一步 說明:

假設有個表products,裡面有id跟name兩個字段,id是主鍵。

1. 明確指定主鍵並且有此資料,是 row lock(行鎖)。

**如下:

select * from products where id='3' for update;

2. 明確指定主鍵,但若查無此資料,則無鎖(lock)。

**如下:

select * from products where id='-1' for update;

3. 無主鍵,是 table lock(表鎖)。

**如下:

select * from products where name='mouse' for update;

4. 主鍵不明確,是 table lock(表鎖)。

**如下:

select * from products where id<>'3' for update;

select * from products where id like '3' for update;

參考:

用python連線mysql資料庫

import pymysql args connection pymysql.connect args cursors connection.cursor sql select from csdndata where id s cursors.execute sql,1 print cursors....

用python操作mysql資料庫

資料庫的安裝和連線 pymysql的安裝 pip install pymysql python連線資料庫 view code 更多引數 建立表操作 複製 import pymysql db pymysql.connect localhost testuser test123 testdb curso...

mysql多少資料用索引 MySQL資料庫索引詳解

目標 1 索引資料紅黑樹 hash b 樹詳解 2 千萬級資料表如何用索引快速查詢 3 如何基於索引b 樹準確建立高效能索引 4 聯合索引底層資料結構是怎樣的 5 聚集索引與覆蓋索引 6 mysql的最左字首原則 7 為什麼推薦使用自增主鍵做索引 8 mysql索引優化規則 索引的本質 按照官方的定...