java – MySQL InnoDB挂起等待表级锁

前端之家收集整理的这篇文章主要介绍了java – MySQL InnoDB挂起等待表级锁前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个大的生产网络应用程序(Glassfish 3.1 MySQL 5.5).所有表都是InnoDB.每几天应用完全挂起.
SHOW FULL PROCESSLIST显示许多简单的插入或更新查询在不同的表,但都具有状态

Waiting for table level lock

例子:

update user<br>
set user.hasnewmessages = NAME_CONST('in_flag',_binary'\0' COLLATE 'binary')
where user.id = NAME_CONST('in_uid',66381)

insert into exchanges_itempacks
set packid = NAME_CONST('in_packId',332149),type = NAME_CONST('in_type',1),itemid = NAME_CONST('in_itemId',23710872)

“Time”最长的查询也正在等待表级锁.
请帮忙找出为什么MysqL尝试获取级别锁,以及可以锁定所有这些表.关于InnoDB锁的所有文章都表示,如果您不强制它,这个引擎不会使用表锁定.

我的my.cnf有这个:

innodb_flush_log_at_trx_commit = 0
innodb_support_xa = 0
innodb_locks_unsafe_for_binlog = 1
innodb_autoinc_lock_mode=2

二进制日志已关闭.我根本没有“LOCK TABLES”或其他明确的锁定命令.交易是READ_UNCOMMITED.

SHOW ENGINE INNODB STATUS输出
http://avatar-studio.ru:8080/ph/imonout.txt

解决方法

您的应用程序仍在使用MsqlDump来备份数据库吗?这可能会导致这种行为.

猜你在找的Java相关文章