Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 单数据库调用与多数据库调用的性能对比_Mysql_Database - Fatal编程技术网

Mysql 单数据库调用与多数据库调用的性能对比

Mysql 单数据库调用与多数据库调用的性能对比,mysql,database,Mysql,Database,执行一个数据库(MySql)调用来检索10个结果与执行10个单独的db调用来检索这些结果在性能上有什么不同 如果其中一个比另一个好,有没有一种方法可以用来测试两者之间的性能?(我只是好奇,因为将来如果我对性能有其他问题,我可以用建议的方法自己测试一下)对于相同的数据,一次调用总是比多次调用要快。网络掉头和延迟只是一个组成部分,但SQL处理的启动和中断也会产生一些影响。单次调用更好。您和DB之间的往返次数越少,所涉及的处理就越少。记录集的数据传输更少(嗯,只有一点点) 测试性能。很明显,您可以通过

执行一个数据库(MySql)调用来检索10个结果与执行10个单独的db调用来检索这些结果在性能上有什么不同


如果其中一个比另一个好,有没有一种方法可以用来测试两者之间的性能?(我只是好奇,因为将来如果我对性能有其他问题,我可以用建议的方法自己测试一下)

对于相同的数据,一次调用总是比多次调用要快。网络掉头和延迟只是一个组成部分,但SQL处理的启动和中断也会产生一些影响。

单次调用更好。您和DB之间的往返次数越少,所涉及的处理就越少。记录集的数据传输更少(嗯,只有一点点)


测试性能。很明显,您可以通过编程方式对其进行测试-您的客户端应用程序可以编写两个时间之间的开始/停止时间,这很简单,并且从客户端的角度显示了性能差异。如果您想查看服务器性能,可以启用常规日志(或二进制日志)并查看每个查询的性能。

什么更重?一磅苹果还是一辆自行车?
查询不相等。你不能仅仅用数字来比较它们。
查询首先必须是合理的。尽可能以最好的方式完成工作,而不是想象中的“更快”。这是选择一个查询而不是另一个查询的唯一原因

我希望您指的是不同的查询,而不仅仅是一个调用10次的查询。
当然,应该避免多次运行同一查询,就像任何其他重复操作一样——这是编程艺术的基本规则之一

一旦你的查询是正确的,你就必须加快它们。要回答这个问题,请了解评测。


BENCHMARK
EXPLAIN
是mysql评测和性能调优的工具

您可以轻松地在两者之间进行性能测试。您可以执行类似以下伪代码的操作:

start = CurrentTime()
do 1000 times
  for i from 1 to 10
    query_for_one_row(i)
  end
end
end = CurrentTime()
time_for_individual_queries = (end - start) / 1000

start = CurrentTime()
do 1000 times
  query_for_rows(1,10)
end
end = CurrentTime()
time_for_bulk_queries = (end - start) / 1000

请注意,我每次运行一千次,因为通常在性能测试时,您正在测试的东西太快,无法持续观察差异,除非您重复运行它。当然,你会想根据自己的特殊情况进行调整

我知道的老线索。。。我想我还是会借我的2美分:)

在某些不太可能的情况下,可能需要多次呼叫。。。任何人,如果我错了,请纠正我

我遇到了这样一种情况,我从数据库中提取信息并编译成一个简单的CSV。。。最终,有很多数据与许多表、成员、订单、订单中的项目、产品、不同的产品版本等联系在一起。。。运行一个查询需要花费很长时间,你可以说DB shema应该有点不同,但我解决这个问题的方法是运行一个简单的数据查询。。。然后运行单个查询并将数据刷新到前端


虽然我同意99%的情况下,一个查询总是最好的,但也有一些不太可能的情况下,多个查询可能会有帮助。

mysql有
基准测试
operator@Col.弹片根本不涉及打开10个连接或准备和执行10个查询的成本,或者需要在客户端发生的任何事情,或者从客户端到服务器的对话
BENCHMARK
只测试查询在服务器上的运行方式(这也很有用,但不包括我们感兴趣的所有成本)。我提供了一个通用的方法来测试10个小查询和一个大查询的全部成本。这个评论非常有用。