如何解决mysql死锁

见官方文档:http://dev.mysql.com/doc/refman/5.1/zh/storage-engines.html#innodb-lock-modes 

可直接在mysql命令行执行:show engine innodb status\G; 
查看造成死锁的sql语句,分析索引情况,然后优化sql 
然后 
show processlist; 
kill processid; 
另外可以打开慢查询日志,linux下打开需在my.cnf的[mysqld]里面加上以下内容: 
long_query_time = 2   
log-slow-queries = /usr/local/mysql/mysql-slow.log

 

 

如果有死锁,死锁日志如下:

Spin rounds per wait: 2.78 mutex, 3.99 RW-shared, 30.00 RW-excl
------------------------
LATEST DETECTED DEADLOCK
------------------------
110127 11:40:10
*** (1) TRANSACTION:
TRANSACTION 1B0E, ACTIVE 162 sec, process no 24311, OS thread id 1100859712 fetching rows
mysql tables in use 1, locked 1
LOCK WAIT 4 lock struct(s), heap size 1248, 3 row lock(s)
MySQL thread id 3, query id 34 localhost root Searching rows for update
update erict set b=9 where b=2 an


分享到: 微信 更多