mysql有一条sql语句导致一直锁表,怎么解决?
-- 查看那些表锁到了show OPEN TABLES where In_use > 0;-- 查看进程号show processlist;--删除进程kill 1085850;
mysql什么时候锁表或锁行?
mysql锁表或锁行的情况是:
当主键或者唯一索引的效果时,是锁行。但是如果“重复率”高时,Mysql不会把这个普通索引当做索引,即会造成一个没有索引的SQL,从而形成锁表。
特别是在UPDATE、DELETE操作时,MySQL不仅锁定WHERE条件扫描过的所有索引记录,而且会锁定相邻的键值,即所谓的next-key locking。
mysql加写锁之后仍然可以读?
是的,MySQL的写锁只会阻止其他会话对同一行数据进行写操作,而不会阻止读操作。因此,在加上写锁之后,其他会话仍然可以读取该行数据。但是,如果读操作需要访问被锁定的行,则会被阻塞,直到写锁被释放。
这个很显然是不可以的!
MySQL的语法,LOCK TABLE my_table_name Write; 用写锁锁表,会阻塞其他事务读和写。
所以加写锁之后其它的读操作会被阻塞,直到该所解除释放!

