一、锁定表原因1、锁定表在insert update、delete中发生;
2、锁定表的原理是当数据库使用独占阻塞机制执行上述语句时,在发生commite或回滚或退出数据库用户之前锁定表。
3、锁表理由:
第一、a程序执行对表的插入,还没有完成命令的情况下,如果b程序也进行对表的插入,在那个时间点会发生资源繁忙的异常,这就是锁表;
其次,锁定表往往是同时而不是并行发生的。 对于并行情况,当一个线程操作数据库时,另一个线程无法操作数据库。 cpu和i/o分配原则)
4、减少锁表的概率:
缩短从执行insert、update和delete语句到commite的时间。 将具体的批量点执行改为单一执行,优化sql本身的非执行速度
异常回滚事物的情况。
二.查看mysql锁表解析#进程id,用kill id杀死进程
show processlist;
select * from information _ schema.process list;
#询问正在运行的进程
select * from information _ schema.processlistwherelength (info ) 0;
#询问是否锁定桌子
show OPEN TABLES where In_use 0;
#查看锁定的内容
select * from information _ schema.innodb _ locks;
#等待锁定
select * from information _ schema.innodb _ lock _ waits;
杀死锁表的过程
kill 5601