在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博客 ” ,链接:https://blog.itpub.net/725820/viewspace-2712150/ ,如需转载,请注明出处,否则将追究法律责任。