每个数据库/表的MySQL查询缓存

每个数据库/表的MySQL查询缓存,mysql,performance,caching,Mysql,Performance,Caching,我有一个在Linux上运行的MySQL服务器。 它有几个关键的应用程序,我们已经将querycache设置得尽可能高。 我还有一些非关键数据库(wordpress/etc) 问题: 是否可以在每个数据库级别上微调查询缓存 是否可以基于每个表对查询缓存进行微调 这值得做吗?在关键表上有一个经过微调的查询缓存,数据库在访问非重要数据时是否仍会结巴 提前感谢不幸的是,很少有选项允许您操作MySQL查询缓存 该选项指示MySQL不缓存大于设置限制的查询结果。您希望降低此值的原因: 一些比较少见的查询返

我有一个在Linux上运行的MySQL服务器。 它有几个关键的应用程序,我们已经将querycache设置得尽可能高。 我还有一些非关键数据库(wordpress/etc)

问题:

  • 是否可以在每个数据库级别上微调查询缓存
  • 是否可以基于每个表对查询缓存进行微调
  • 这值得做吗?在关键表上有一个经过微调的查询缓存,数据库在访问非重要数据时是否仍会结巴

  • 提前感谢

    不幸的是,很少有选项允许您操作MySQL查询缓存

    该选项指示MySQL不缓存大于设置限制的查询结果。您希望降低此值的原因:

    • 一些比较少见的查询返回较大的结果集
    • 大多数较慢的查询通常返回较小的结果集
    紧跟在
    SELECT
    语句之后的关键字指示MySQL不要缓存该结果

    相反,您可以将服务器选项设置为
    2
    ,以便只缓存使用
    SQL\u CACHE
    关键字的查询

    我还建议确保您的查询缓存实际上已被充分使用<代码>显示状态,如“Qcache_free_memory”提供此信息。如果查询缓存中有很大一部分是空闲的,那么这可能意味着数据更改太频繁,无法重用缓存中的结果。 这也可能意味着大多数查询返回的结果集都大于(这可能意味着查询设计不当)

    还有一些其他提示

    但是,您确实想知道这是否值得这么做。在我看来,查询缓存充其量只是快速数据库的次要因素。适当的索引是第一个因素。此外,在许多情况下,您的内存会更好地用于缓存索引(最重要的参数是InnoDB表的,或MyISAM表的)