使用 MySQL 查询缓存加速我们的网站
加速 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 配置文件中。
请注意
,它可能位于我们安装的不同位置。
在 sudo
或 root
模式下使用文本编辑器打开文件,然后添加这些值(如果文件中尚不存在)。 如果它们确实存在,只需取消注释即可。
query_cache_size = 268435456
query_cache_type=1
query_cache_limit=1048576
查询缓存可以显着提高 Web 应用程序的速度,尤其是当我们的应用程序主要进行读取时。 使用上述方法监控状态,并查看其随时间的变化情况。
相关文章
如何在 MySQL 中声明和使用变量
发布时间:2024/03/26 浏览次数:115 分类:MySQL
-
当你需要在 MySQL 中的脚本中存储单个值时,最好的方法是使用变量。变量有不同的种类,有必要知道何时以及如何使用每种类型。
在 MySQL 中使用 Mysqladmin 刷新主机解除阻塞
发布时间:2024/03/26 浏览次数:82 分类:MySQL
-
你将了解阻止主机的原因。此外,通过使用 phpMyAdmin 和命令提示符刷新主机缓存来解除阻塞的不同方法和效果。