单个数据库调用vs多个数据库调用性能

时间:2010-09-08 20:41:46

标签: mysql database

进行单个数据库(MySql)调用以检索10个结果与进行10次单个数据库调用以单独检索这些结果的性能有何不同?

如果一个比另一个好,有没有办法可以测试两者之间的性能? (我只是很好奇,因为将来如果我有另外一个关于性能的问题,我可以使用建议的方法来测试它自己)

5 个答案:

答案 0 :(得分:5)

单个呼叫始终比同一数据的多个呼叫更快。只是网络转向和延迟本身就是一个组件,但SQL处理的启动和拆除也会产生一些影响。

答案 1 :(得分:1)

什么是重的 - 10个苹果或自行车?
查询不相等!。你不能只用数字来比较它! 查询必须明智。期。不可想象的更快,但明智。做它的工作在它的位置。这是偏好一个查询而不是另一个查询的唯一原因。

我希望你的意思不同,而不只是10次单一查询 当然,应该避免多次运行相同的查询,以及任何其他重复操作 - 这是基本的编程规则之一。

回答你未来的表现问题 -
了解资料分析

BENCHMARK <query>EXPLAIN <query>是用于mysql分析和性能调优的工具

答案 2 :(得分:0)

单次通话更好。您和DB之间的往返次数减少,涉及的处理更少。记录集的数据传输较少(嗯,只有一点点)。

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

答案 3 :(得分:0)

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

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

请注意,我每次运行一千次,因为通常在性能测试时,您测试的东西太快,无法一致地观察到差异,除非您反复运行它。当然,您会想要根据您的具体情况进行调整。

答案 4 :(得分:-1)

老线程我知道......我以为我会借给我2美分:))

有一些不太可能需要多次通话的情况......任何人,如果我在这里错了,请纠正我。

我遇到了这样一种情况:我从数据库中提取信息并编译成一个简单的CSV ...最后,有很多数据与许多表,成员,订单,订单中的项目,产品,不同的产品版本等...运行单个查询字面上花了很长时间你可以争辩说数据库shema可能应该有点不同,但我解决这个问题的方法是运行一个简单的数据查询...然后运行单个查询并将数据flush()到前端。

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