【问题标题】:Random query execution time in test case测试用例中的随机查询执行时间
【发布时间】:2010-09-29 13:21:45
【问题描述】:

我正在测试一个具有相当大的 sql 查询的方法。我有大约 15 个连接,一个带有 2 个连接的子查询,所以它很复杂。但每次跑步需要不同的时间。一次是 4 秒,有时是 80 秒,甚至是 200 秒。是标准的单元测试,用FactoryGirl准备数据,数据总是一样的。

是否有任何 mysql 分析器、mysql 选项或其他工具可以帮我弄清楚为什么存在如此大的运行时间差异?怎么弄出来的?

【问题讨论】:

    标签: ruby-on-rails unit-testing mysql tdd


    【解决方案1】:

    MySQL 很有可能正在缓存一些子查询和/或连接的结果,这很容易解释您在响应时间中看到的变化。

    至于分析器,快速google for "mysql profiler" 提出了this link,以及a previous question here on SO 提出了同样的问题。

    【讨论】:

    • SELECT 中有 SQL_NO_CACHE,第一次运行可能需要 2 秒,第二次运行需要 150 秒....
    • 也可以试试内置的EXPLAIN。只需将EXPLAIN 放在您的查询前面,它就会让您了解mysql 打算如何获取您的数据。
    猜你喜欢
    • 2017-06-04
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2018-09-20
    • 2011-11-24
    • 2014-11-26
    相关资源
    最近更新 更多