首页 > 数据库技术 > 详细

MYSQL锁

时间:2019-03-20 23:09:10      阅读:158      评论:0      收藏:0      [点我收藏+]

前言:MySQL锁是真对客户端而言的,我们可以在客户端获取数据库中表的不同类型锁,来实现对表的锁定操作。个人理解这个锁主要限制有两点,1)限制自己,即限定自己只能对当前输定的表操作。2)限定别人,即可以限定别人查看或更新该锁定的表;

一:语法

LOCK TABLES
    tbl_name [[AS] alias] lock_type
    [, tbl_name [[AS] alias] lock_type] ...  //即一次可以获取多个表的锁

lock_type: {
    READ [LOCAL]
  | [LOW_PRIORITY] WRITE   //锁的类型有两种,read和write
}

UNLOCK TABLES  //释放锁

二:read锁

2.1  限制自己 (仅支持看看当前锁定的表)

 * 不能查看别的表

 * 不能更新当前表

技术分享图片
mysql> LOCK TABLES TN read;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from COFFEES;
ERROR 1100 (HY000): Table COFFEES was not locked with LOCK TABLES
mysql> update TN set name=sss333 where id=2;
ERROR 1099 (HY000): Table TN was locked with a READ lock and cant be updated
View Code

2.2 限定别人 

 * 别人也不能更新该锁定的表,例如更新操作会一直等待该表的锁释放。但不影响查看别的表

技术分享图片
mysql> select * from TN;  //不影响查看该表和其它表
+----+--------+
| id | name   |
+----+--------+
|  1 | qqq234 |
|  2 | sss333 |
|  3 | ddd    |
+----+--------+
3 rows in set (0.00 sec)

mysql> insert into TN(id,name)value(4,22ddd); //影响插入
Query OK, 1 row affected (28.94 sec)   //插入用了28.94秒(因为释放了表的锁)
View Code

三:write锁

 

MYSQL锁

原文:https://www.cnblogs.com/jinliang374003909/p/10568274.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!