0
我知道这个问题是通用的,但希望有人知道引擎盖下的mySQL。mySQL查询队列系统
我在想如何同时运行多个查询-Q1,Q2,Q3-时,我的SQL服务器(版本5.5.7到5.7是我们使用的)分配优先级。
它平衡处理器时间相等的3个查询之间:1/3
每个?它是否为更大的查询分配更多的计算能力,估计的种类,例如, 2/3 Q1,Q2-Q3的1/6?
我的问题背后的原因是服务器运行多个交付时冻结的原因。看起来,如果第一季度数量巨大,服务器不会将其排入队列,并允许Q2-Q3保持数小时,始终保持最低水平以继续提供。
事实是我们的服务器可以接近冻结,即使对于比较小的查询,也暗示有一个纯粹的FIFO队列(先进先出)?为更简单的查询Q2-Q3分配如此小的功率,直到第一季度完成,这些查询几个小时才能完成。这不可能是这样,但我为了明白它为什么会阻止而努力。
由于提前,
除了磁盘访问,这得到了一些特殊的待遇,查询基本上执行而不考虑其他查询。不过,他们会因为锁定而相互阻塞。如果其中一个查询例如想要更新另一个使用的行(或者如果您正在使用MyISAM:一张表),取决于它可能必须等到锁解除的情况。长时间运行的查询通常是长时间运行的,因为它们使用(也许是锁定)很多资源。尝试优化您的查询(例如,加快速度,增加索引锁定更少,将其拆分成小部分,使用其他交易设置,...) – Solarflare
谢谢我知道一点关于锁定(每行,每个表,取决于在引擎上 - 我们有InnoDB)。我不明白你的意思是“不考虑其他查询”。过度简化:所以如果Q1需要1h,Q2需要1s,mySQL会先处理Q1,Q2的输出将在1h 1s内可用?或者它会同时运行,Q2比单独运行需要更长的时间? – user3310782
是的,每个客户都有自己的线程。如果Q1和Q2不互相锁定,Q1和Q2将并行运行。 – Solarflare