首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有插入到InnoDB表中的触发器的MySQL表

问具有插入到InnoDB表中的触发器的MySQL表
EN

Database Administration用户
提问于 2017-09-28 13:26:52
回答 1查看 322关注 0票数 0

背景

我有一个Java应用程序,可以在任何给定的时间被300-500个用户使用.在一个单独的Linux服务器上,我们有一个5.7.19 MySQL社区数据库服务器,它处理这个应用程序的所有事务。我们有一个非常活跃的InnoDB表,称为“请求”。这个表涉及许多查询。70%是select语句,20%是更新语句,10%是插入语句。

在对请求进行的任何CRUD操作中,都有一个触发器对另一个称为审计的表执行插入操作。该审计表是MyISAM。我们每天有一两次非常奇怪的性能问题,这些问题是由锁等待超时引起的(至少我在Apache的日志文件中看到了这种情况)。因此,我编写了一个shell脚本,每当我在Tomcat日志文件中看到这个条目时,它就会转储MySQL中的所有进程。我看到的是有一个完整的表锁请求。

问题

具有触发器的InnoDB表是否会导致InnoDB表上的表级锁?

EN

回答 1

Database Administration用户

发布于 2017-09-28 15:46:00

插入到MyISAM表中可能需要该表上的表锁。由于该INSERT来自InnoDB表上的触发器,因此它位于事务中。因此,如果表锁需要很长时间,事务就需要很长时间,因此“锁等待超时”。

表锁上的例外情况是,如果没有更新或删除MyISAM表,而PK是AUTO_INCREMENT。(或者诸如此类的事情)挖掘文档中的细节。)

是否可以在audit事务之外添加InnoDB?

你说的是“全表锁请求”-哪张桌子?具体的文本是什么?

另一件事情可能会导致插入MyISAM表的混乱--一个大的SELECT。也许你一天做两次大报告?

重新考虑是否将MyISAM用于audit。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/187164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档