迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

使用 MySQL 查询缓存加速我们的网站

作者:迹忆客 最近更新:2023/01/14 浏览次数:

加速 Web 应用程序的最佳方法之一是在数据库中启用查询缓存,它将常用的 SQL 查询缓存在内存中,以便发出相同请求的下一页几乎即时访问。

这种方法之所以如此强大,是因为我们不必对 Web 应用程序进行任何更改,只需牺牲一点内存即可。 这不会解决你所有的问题,但绝对不会有坏处。

注意 :如果我们的应用程序频繁更新表,那么查询缓存将不断被清除,我们不会从中获得太多或任何好处。 这非常适合主要读取数据库的应用程序,例如 WordPress 博客。 如果我们在共享主机上运行,这也将不起作用。

在服务器运行时启用缓存

我们要做的第一件事是确保我们安装的 MySQL 实际上具有可用的查询缓存支持。 大多数发行版都可以,但我们还是应该检查一下。

我们需要从 MySQL 控制台运行此命令,它会告诉我们查询缓存是否可用。

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+

不要误以为这意味着实际上启用了查询缓存,因为大多数托管服务提供商不会默认启用它。 奇怪的是,我的 Ubuntu Feisty 安装已经启用了它……

接下来我们需要检查并查看是否启用了查询缓存。 我们需要检查多个变量,因此我们不妨通过检查变量 query% 一次完成所有操作

mysql> show variables like 'query%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_alloc_block_size       | 8192    |
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 8388608 |
| query_cache_type             | ON      |
| query_cache_wlock_invalidate | OFF     |
| query_prealloc_size          | 8192    |
+------------------------------+---------+

以下是列表中的重要项目及其含义:

  • query_cache_size – 这是缓存的大小(以字节为单位)。 将此值设置为 0 将有效地禁用缓存。
  • query_cache_type – 此值必须为 ON 或 1 才能默认启用查询缓存。
  • query_cache_limit – 这是将被缓存的最大查询大小(以字节为单位)。

如果 query_cache_size 值设置为 0 或者我们只想更改它,则需要运行以下命令,请记住该值以字节为单位。 例如,如果我们想为缓存分配 8MB,我们将使用 1024 * 1024 * 8 = 8388608 作为值。

SET GLOBAL query_cache_size = 8388608;

同样,可以使用相同的语法设置其他选项:

SET GLOBAL query_cache_limit = 1048576;
SET GLOBAL query_cache_type = 1;

现在我们如何判断它是否真的有效? 我们可以使用 SHOW STATUS 命令提取所有以“Qc”开头的变量,以查看幕后情况。

mysql> SHOW STATUS LIKE 'Qc%';
+-------------------------+--------+
| Variable_name           | Value  |
+-------------------------+--------+
| Qcache_free_blocks      | 65     | 
| Qcache_free_memory      | 201440 | 
| Qcache_hits             | 18868  | 
| Qcache_inserts          | 2940   | 
| Qcache_lowmem_prunes    | 665    | 
| Qcache_not_cached       | 246    | 
| Qcache_queries_in_cache | 492    | 
| Qcache_total_blocks     | 1430   | 
+-------------------------+--------+
8 rows in set (0.00 sec)

你会在统计数据中注意到我还有很多空闲内存。 如果我们的服务器显示大量低内存修剪,我们可能需要考虑增加此值,但我不会在 Web 服务器的查询缓存上花费太多内存……我们需要为 apache、php、ruby 或 无论您使用什么。

在配置文件中启用

如果我们希望这些更改在重新启动或重新启动 mysql 服务器后仍然存在,我们需要将它们添加到 MySQL 的 /etc/mysql/my.cnf 配置文件中。

请注意 ,它可能位于我们安装的不同位置。

sudoroot 模式下使用文本编辑器打开文件,然后添加这些值(如果文件中尚不存在)。 如果它们确实存在,只需取消注释即可。

query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576

查询缓存可以显着提高 Web 应用程序的速度,尤其是当我们的应用程序主要进行读取时。 使用上述方法监控状态,并查看其随时间的变化情况。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

如何在 MySQL 中声明和使用变量

发布时间:2024/03/26 浏览次数:115 分类:MySQL

当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。

在 MySQL 中实现刷新权限

发布时间:2024/03/26 浏览次数:211 分类:MySQL

本教程介绍了 MySQL 中的刷新权限命令,用于刷新授权表并影响允许的更改。

在 MySQL 中设置时区

发布时间:2024/03/26 浏览次数:93 分类:MySQL

在本教程中,我们将学习如何在 MySQL 服务器中更改时区。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便