MySQL表鎖

zchbaby2000發表於2020-08-16

在mysql中的表鎖,LOCK TABLE t READ;  用讀鎖鎖表,會阻塞其他事務修改表資料
===================================================================
####Session 1
mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | WW   |
|    2 | SS   |
|    3 | VV   |
+------+------+
3 rows in set (0.00 sec)

####讀鎖-鎖表t
mysql> LOCK TABLE t READ;

####Session 2,可以讀取資料
mysql> select * from t where id=1;
+------+------+
| id   | name |
+------+------+
|    1 | WW   |
+------+------+
1 row in set (0.00 sec)

####Session 2, insert資料被阻塞
mysql> insert into t values(4,'LL');

####Session 1, 解除讀鎖-鎖表t
mysql> UNLOCK table;
Query OK, 0 rows affected (0.00 sec)

在mysql中的表鎖,LOCK TABLE t WRITE; 用寫鎖鎖表,會阻塞其他事務讀和寫
===================================================================
####Session 1
mysql> select * from t;
+------+------+
| id   | name |
+------+------+
|    1 | WW   |
|    2 | SS   |
|    3 | VV   |
+------+------+
3 rows in set (0.00 sec)

####Session 1,寫鎖-鎖表t
mysql> LOCK TABLE t WRITE;

####Session 2,讀取資料被阻塞
mysql> select * from t where id=1;

####Session 2, insert資料被阻塞
mysql> insert into t values(4,'LL');

####Session 1, 解除讀鎖-鎖表t
mysql> UNLOCK table;
Query OK, 0 rows affected (0.00 sec)
=================================================================

--待續

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/725820/viewspace-2712150/,如需轉載,請註明出處,否則將追究法律責任。

相關文章