mariadb:性能并行查询

时间:2018-05-09 15:26:15

标签: mysql mariadb

我们需要您的帮助,以了解更多有关mariadb 10.2 ..

的内部信息

我们有一个复杂的查询。如果我们单独运行此查询,则需要5秒钟。但是,如果我们并行运行相同的查询,则每个查询都会运行更长的因子。

查询在where部分中包含一个随机整数,因此我们不使用查询缓存。我们的服务器有4个cpu。

我们的观察:

(1)运行1 query => ~5秒

(2)运行相同的查询4次(parallel)=>每个查询运行~5.5秒

(3)运行相同的查询7次(parallel)=>每个查询运行~7秒

(4)运行相同的查询10次(parallel)=>每个查询运行~11秒

我们优化了查询,我们不需要临时磁盘表。我们可以看到,所有4个cpus的载荷都在80-90%左右。

但我们没有想法,为什么执行时间如此不同。

谢谢,Rene

1 个答案:

答案 0 :(得分:0)

你有没有让你的笔记本电脑变慢,因为有太多的应用程序打开了?

任何计算机都拥有有限的资源。 CPU,RAM,磁盘。如果您运行的流程使用了大量资源,那么下一个流程的可用性就会降低。

并行线程相同,每个线程都运行查询。他们每个人都需要使用一些CPU来处理数据。如果数据在磁盘上,则需要将其加载到缓冲池中,这会占用一些磁盘带宽。

此外,一些内部数据结构需要全局锁定。就像两个线程试图将页面加载到缓冲池中一样,两个线程都需要一个全局锁定,以便找到一个空闲页面。一个线程抓住该锁,执行其工作并释放锁。第二个线程一直在等待。这种情况每秒发生很多次,但线程越多,争用就越多。