北京SEO

mysql的死锁问题分析与处理方法

2019/10/10/17:33:43  阅读:1697  来源:谷歌SEO算法  标签: 1号店SEO

前几天我的mysql突然出现大量死锁,全部需要一个个Kill id才能完成,下面我总结一下我最终解决死锁方法吧.

myISAM和MEMORY存储引擎采用的是表级锁table-level locking

死锁:所谓死锁<DeadLock>:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.

表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.在遇到问题时,先执行show processlist找到死锁线程号.然后Kil processNo.

当然主要解决还是需要去看一下具体的操作,可能产生死锁.

Show innodb status检查引擎状态,可以看到哪些语句产生死锁.

SHOW PROCESSLIST查看数据库中表的状态,是否被锁.

kill id //杀掉被锁的表,代码如下:

  1. setautocommit=0;
  2. select*fromt1whereuid='xxxx'forupdate//在有索引(例如uid)的情况下是行锁,否则是表锁
  3. insertintot1values(1,'xxxxx');
  4. commit;
  5. =====================================================
  6. locktablest1write|read;
  7. insertintot1values(2,'xxxxx');//只有insert
  8. unlocktables;//phpfensi.com

解决办法:

1、全表扫描,没有可用的索引.

2、解决把你程序中的SQL,把IN改成JOIN.

3、在mysql中的my.ini中把数据库连接时间改小点.

广告内容

mysql的死锁问题分析与处理方法 mysql的死锁问题分析与处理方法 mysql的死锁问题分析与处理方法

相关阅读

热门评论

卢松松博客 卢松松博客

关注创业者、自媒体人和站长的网站

总篇数167

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法