mysql数据库死锁_MySQL
程序员文章站
2022-04-30 08:10:10
...
当我们频繁的对数据库进行插入或更新的时候,有可能会直接报sql错误1205:lock wait timeout exceeded。数据库的死锁。
一般INNODB数据库会自动添加事务,当进行插入或者更新的时候,如果上次commit尚未执行完,而又有一次新的commit提交的时候,系统就会报SQL错误1205:lock wait timeout exceeded。这就是mysql死锁。
作为一个新手,碰到这样苦逼的事情自然是手足无措。于是赶紧上网看看解决方案,不负所望,网上还真找到相应的结局方案,而且给了三种:
1 应急方案:简单暴力 show processlist;然后看是哪个进程引起的死锁,直接kill掉。
2 根治方案: select * from innodb_trx 查看是那些事务占据了资源(这个方案说到这里就没有然后了,查看完了呢?卧槽,也是不负责任)。
3 设置等待超时:innodb_lock_wait_timeout=50,autocommit=on. 设置等待超时这个方案看起来不错,但是仔细一样,你设置多少合适呢?万一每次更新上万条数据呢,慢的很怎么办?突然感觉可行性不高。第二种呢,根本没有讲完就算了。只能选择简单暴力第一种。
后来我咨询了一下数据库方面的大神,他给我推荐了一个方案:先禁用索引,再关闭,再关闭自动提交,再关闭数据库日志。然后他给我操作了一遍(当然我没学会),不过还真的好使,建议会用的可以试试。
下一篇: PHP面相对象中的重载与重写详解
推荐阅读
-
IDEA搭建Springboot+SpringMVC+Mybatis+Mysql(详细、易懂)
-
将MySQL数据库移植为PostgreSQL
-
虚拟机安装mysql数据库(安装mysql详细步骤)
-
PHP获取php,mysql,apche的版本信息示例代码
-
java连接mysql的jar包没有bin(mysql可视化管理工具)
-
使用PHP备份MYSQL数据的多种方法
-
MySQL 在触发器里中断记录的插入或更新?
-
mysql 字符集的系统变量说明
-
MYSQL ERROR 1045 (28000): Access denied for user (using password: YES)问题的解决
-
mysql 常用数据库语句 小练习