代码之家  ›  专栏  ›  技术社区  ›  Pepper

MySQL单查询基准策略

  •  5
  • Pepper  · 技术社区  · 14 年前

    我的应用程序中有一个缓慢的MySQL查询,需要重新编写。问题是,它只在我的生产服务器上运行缓慢,而且只在没有缓存的情况下运行。我第一次运行它需要12秒,之后的任何时候都需要500毫秒。

    有没有一种简单的方法可以测试这个查询,而不让它碰到查询缓存,这样我就可以看到重构的结果?

    谢谢!

    2 回复  |  直到 14 年前
        1
  •  7
  •   johannes    14 年前

    MySQL支持防止缓存单个查询。尝试

    SELECT SQL_NO_CACHE field_a, field_b FROM table;
    

    或者,您可以为当前会话拆分查询缓存:

    SET SESSION query_cache_type = OFF;
    

    http://dev.mysql.com/doc/refman/5.1/en/query-cache.html

        2
  •  1
  •   David M    14 年前

    再加上约翰内斯的好回答,我要做的是

    RESET QUERY CACHE;

    这有一点额外的好处,即不需要对我正在执行的语句或连接进行任何更改。

    要做的一件小事是以某种方式更改正在执行的语句,例如在注释中放入一个随机数,因为只有当查询与前一个查询的字节相同时,查询才会位于缓存中。