1.锁表:
锁单个表:LOCK TABLES tablename read/write
锁多个表:LOCK TABLES tablename1 read/write,tablename2 read/write
当read时,
当前会话:可以查询,更新会报错;
其他会话:可以查询,更新会进入等待;
当wirte时,
当前会话:可以读写;
其他会话:读写会进入等待状态;
当前会话锁定了表A,没有锁表B,当前会话操作表B时,会报错。必须将表B也锁定才可以操作表B
2.解锁:unlock table
,当前会话被锁的表全部解锁
3.查询是否有被锁定的表:show OPEN TABLES where In_use >= 1;
4.查询进程(如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程)
show processlist
5.杀死进程id(就是上面命令的id列) kill id
其它关于查看死锁的命令:
1:查看当前的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX;
2:查看当前锁定的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;
3:查看当前等锁的事务
SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;