加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – MySQL InnoDB挂起等待表级锁

发布时间:2020-12-15 00:09:52 所属栏目:Java 来源:网络整理
导读:我有一个大的生产网络应用程序(Glassfish 3.1 MySQL 5.5).所有表都是InnoDB.每几天应用完全挂起. SHOW FULL PROCESSLIST显示许多简单的插入或更新查询在不同的表,但都具有状态 Waiting for table level lock 例子: update userbrset user.hasnewmessages =
我有一个大的生产网络应用程序(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'' 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来备份数据库吗?这可能会导致这种行为.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读