首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL 5.5中大量的INSERT语句锁定在其他表上的插入

问MySQL 5.5中大量的INSERT语句锁定在其他表上的插入
EN

Stack Overflow用户
提问于 2013-09-16 09:30:59
回答 1查看 595关注 0票数 0

我正试图理解MySQL 5.5服务器的一个问题。

此服务器承载多个数据库。每天,在特定的时间,一个进程在这个数据库中运行一系列插入到中的表。此过程持续5到15分钟,具体取决于插入的行数。

这个过程运行得很完美。但它有一个意想不到的副作用。所有其他插入和更新在与插入的两个表无关的表上运行,只需静坐等待进程停止。在此数据库之外进行读写操作非常好,SELECT语句也很好。

那么,一个表如何能够阻塞数据库的其余部分,而不是阻止整个服务器(由于加载)?

背景:-

  • 插入的表是具有1,000万至2,000万行的MyISAM。
  • MySQL是PerconaV5.5,正在为运行在Debian上的一个从服务器提供服务。
  • 插入记录的进程不需要显式锁定。
  • Insert语句中没有一个不从任何其他表中选择数据。它们也是INSERT忽略语句。

附加信息:

当这种情况发生时,进程列表中没有锁表条目,而插入导致此问题的记录的处理器不会发出任何表锁。

我已经调查了表锁定的常见原因,我认为我已经排除了它们。这种行为要么与MySQL的工作方式有关,要么与拥有大型数据库文件有关,甚至可能与OS/文件系统有关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-26 09:37:37

经过几个星期的尝试,我终于找到了这个:Yoshinori松下博客- MyISAM和磁盘IO调度程序

Yoshinori演示了将调度程序队列更改为100000 (从默认的128个)大大提高了大多数调度程序上MyISAM的吞吐量。

在对我的系统进行此更改后,在运行此进程时,MyISAM表上不再有任何引人注目的数据库挂起实例。随着数据量的增加,预期的数据略有减少,但系统保持稳定。

任何在MyISAM中遇到性能问题的人都应该阅读Yoshinori的博客文章,并考虑这个解决方案。

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

https://stackoverflow.com/questions/18824657

复制
相关文章

相似问题

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