最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
mysql的死锁问题分析与处理方法
时间:2012-09-05 编辑:简简单单 来源:一聚教程网
myISAM和MEMORY存储引擎采用的是表级锁table-level locking
死锁
所谓死锁
因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.
表级锁不会产生死锁.所以解决死锁主要还是真对于最常用的InnoDB.
在遇到问题时
先执行show processlist找到死锁线程号.然后Kill processNo
当然主要解决还是需要去看一下具体的操作.可能产生死锁
Show innodb status检查引擎状态 ,可以看到哪些语句产生死锁
SHOW PROCESSLIST查看数据库中表的状态,是否被锁;
kill id //杀掉被锁的表
===================================================
代码如下 | 复制代码 |
set autocommit=0; select * from t1 where uid='xxxx' for update //在有索引(例如uid)的情况下是行锁,否则是表锁 insert into t1 values(1,'xxxxx'); commit; ===================================================== lock tables t1 write|read; insert into t1 values(2,'xxxxx'); //只有insert unlock tables; |
解决办法
1、全表扫描,没有可用的索引。
2、解决把你程序中的SQL,把IN改成JOIN,
3、在mysql中的my.ini中把数据库连接时间改小点。
-
上一个: 直接通过SQL取分页数据实例
相关文章
- python处理mysql的的方案汇总 10-24
- MySQL加锁及死锁处理分析 06-03
- 定时处理MySQL超时Locked进程脚本 11-06
- MYSQL事务处理使用说明 09-05
- mysql Can''t connect to MySQL server处理方法 06-21
- mysql 的事务处理代码 05-13