gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 04:11:02 34 4
gpt4 key购买 nike

我有一个运行在 Linux 上的 MySQL 服务器。它有一些关键应用程序,我们已将查询缓存设置为我们可以承受的最高值。我还有一些非关键数据库(wordpress/等)。

问题:

  1. 是否可以在每个数据库级别微调查询缓存?
  2. 是否可以针对每个表微调查询缓存?
  3. 值得做吗?对关键表进行微调查询缓存后,数据库在访问非重要数据时是否仍然卡顿?

提前致谢

最佳答案

不幸的是,很少有选项可以让您操作 MySQL 查询缓存。

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

  • 一些相对罕见的查询会返回大量结果集
  • 大多数较慢的查询通常返回较小的结果集

SQL_NO_CACHE关键字,紧跟在 SELECT 语句之后,指示 MySQL 不缓存此结果。

相反,您可以设置 query_cache_type服务器选项设置为 2,以便仅缓存使用 SQL_CACHE 关键字的查询。

我还建议确保您的查询缓存实际上已完全使用。 SHOW STATUS LIKE 'Qcache_free_memory'; 为您提供此信息。如果查询缓存的很大一部分是空闲的,那么这可能意味着您的数据更改过于频繁,缓存中的结果无法重复使用。这也可能意味着您的大多数查询返回的结果集大于 query_cache_limit (这反过来可能暗示设计不当的查询)。

还有一些其他技巧here .

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

关于每个数据库/表的 MySQL 查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11091248/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com