mysql 锁

1.Lock锁整张表:

写锁定:

LOCK TABLES products WRITE;

修改users表内的aa字段

update users set name="aa";

可以修改,但是新打开一个窗口进行修改操作光标将一直闪烁不能修改

解锁:

UNLOCK TABLES;

写锁,锁定之后,只有当前线程可以进行读操作和写操作,其他线程读操作和写操作均被堵塞.....
读锁定:

LOCK TABLES products READ;

读锁,锁定之后,无论是当前线程还是其他线程均只能读操作,写操作全部被堵塞....

 解锁:

UNLOCK TABLES;

获取InonoD行锁争用情况

可以通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况:
mysql> show status like 'innodb_row_lock%';
+-------------------------------+-------+
| Variable_name | Value |
+-------------------------------+-------+
| Innodb_row_lock_current_waits | 0 |
| Innodb_row_lock_time | 0 |
| Innodb_row_lock_time_avg | 0 |
| Innodb_row_lock_time_max | 0 |
| Innodb_row_lock_waits | 0 |
+-------------------------------+-------+
5 rows in set (0.00 sec)

 如果发现争用比较严重,如Innodb_row_lock_waits和Innodb_row_lock_time_avg的值比较高,还可以通过设置InnoDB Monitors来进一步观察发生锁冲突的表、数据行等,并分析锁争用的原因。

 

posted @ 2018-02-01 15:53  开始战斗  阅读(138)  评论(0编辑  收藏  举报