并发mysql查询导致大型查询队列

时间:2016-10-23 08:53:52

标签: mysql

我有一个大型的mysql数据库,它接收大量的查询,每个查询大约需要5-10秒才能执行。

查询涉及检查记录,更新记录和添加记录。

我在查询执行中经历了一些重要的瓶颈,我认为这是因为传入的查询必须排队等待。而当前查询正在使用这些传入查询需要访问的记录。

除了完全重新格式化我的数据库结构和SQL查询之外,还有办法通过查询同时使用数据库记录吗?

1 个答案:

答案 0 :(得分:1)

INSERT,UPDATE或DELETE操作会锁定相关表 - myISAM - 或行-InnoDB - 直到操作完成。请确保您对此类型的查询快速提交..并且还要为您进行交易,以便将相关部分隔离开来。

对于MySQL内部锁定,请参阅:https://dev.mysql.com/doc/refman/5.5/en/internal-locking.html

还要记住,在mysql中存在具有不同功能的不同存储引擎,例如:

  

MyISAM存储引擎支持减少并发插入   读者和作者之间对于给定表的争用:如果是MyISAM   table在数据文件中没有漏洞(中间删除的行),a   可以执行INSERT语句以将行添加到表的末尾   同时SELECT语句正在从中读取行   表。   https://dev.mysql.com/doc/refman/5.7/en/concurrent-inserts.html

最终看看https://dev.mysql.com/doc/refman/5.7/en/optimization.html