迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便