mySQL查询队列系统

时间:2017-08-09 11:13:37

标签: mysql performance queue

我知道这个问题是通用的,但希望有人知道发动机罩下的mySQL。

我想知道在同时运行多个查询-Q1,Q2,Q3时,mySQL服务器(版本5.5.7到5.7是我们使用的那个)分配优先级

  • 3个查询之间是否平衡处理器时间:1/3
    每?

    是否为更大的查询分配更多的计算能力,估计的类型,例如Q2 / Q3为2/3 Q1,1/6?

我的问题背后的原因是服务器在运行多个交付时冻结的原因。似乎如果Q1很大,服务器就不会将它放入队列中,并允许Q2-Q3保持数小时,始终保持最小值以保持交付。

真相是我们的服务器可以接近冻结,即使对于相对较小的查询,这表明存在纯FIFO队列(先进先出)?为简单查询Q2-Q3分配的功率如此之小,以至于在Q1完成之前,这些查询无法完成数小时。情况并非如此,但我很难理解为什么会阻止它。

1 个答案:

答案 0 :(得分:0)

有太多事情可能会给你答案。至少,不是没有更多信息。

  • 您有多少个CPU核心?如果你拥有那么多内核,3个查询应该能够同时运行。但如果它们都受I / O限制,那么它们就会相互减速。
  • 您使用的是InnoDB吗?并行访问比MyISAM好得多。特别是如果涉及UPDATE - MyISAM写入和读取相互阻塞; InnoDB没有遭受这种冲突。
  • 是否涉及某种形式的交易?
  • 是否涉及表格扫描?
  • 是否启用了查询缓存?什么是query_cache_size?如果它超过50M,那么你可能会遇到一些效率低下的问题。
  • innodb_buffer_pool_size的价值是多少?内存多少钱?要执行查询需要触摸的数据集有多大?这些可能正在进行交互以导致I / O,或者更糟糕的是交换。
  • 需要1小时的查询很糟糕。几分钟是坏的'。让我们看一下查询。
  • 还有更多细节可以确定多个 InnoDB 查询是否会运行得更慢或更快,具体取决于它们是否并行运行。

如果您想获得除挥手之外的答案,请提供查询,并SHOW CREATE TABLE查看所涉及的任何表格。另外还表明桌子有多大。

相关问题