MySQL 数据库
MySQL 是网络上最常用的关系数据库管理系统(RDMS)。它是开源的,并有一个免费的社区版本。它提供了企业级数据库所能提供的所有功能。
MySQL 安装时提供的默认设置可能对性能不太有利,但总有办法对这些设置进行微调,以提高性能。此外,请记住数据库设计对性能的影响很大。设计不当的数据库会影响整体性能。
在本节中,我们将讨论如何提高 MySQL 数据库的性能。
我们将修改 MySQL 配置的 |
查询缓存
查询缓存是 MySQL 的一项重要性能功能。它可以缓存 SELECT 查询和结果数据集。当出现相同的 SELECT 查询时,MySQL 会从内存中获取数据,以便更快地执行查询,从而减少数据库的负载。
要检查 MySQL 服务器上是否启用了查询缓存,请在 MySQL 命令行中发出以下命令:
SHOW VARIABLES LIKE 'have_query_cache';
上述命令将显示以下输出:

前面的结果集显示已启用查询缓存。如果已禁用查询缓存,则值为 NO。
要启用查询缓存,请打开 my.cnf
文件并添加以下几行。如果这些行已有注释,只需取消注释即可:
query_cache_type = 1
query_cache_size = 128MB
query_cache_limit = 1MB
保存 my.cnf
文件并重新启动 MySQL 服务器。我们来讨论一下前面三个配置的含义:
-
query_cache_type:这起到了一点令人困惑的作用。
-
如果
query_cache_type
设置为1
,且query_cache_size
为0
,则不分配内存,并禁用查询缓存。如果
query_cache_size
大于0
,则启用查询缓存,分配内存,所有缓存不能超过query_cache_limit
值或未使用SQL_NO_CACHE
选项的查询。 -
如果
query_cache_type
值为0
且query_cache_size
为0
,则不分配内存,并禁用缓存。如果query_cache_size
大于0
,则会分配内存,但不会缓存任何内容,即禁用缓存。
-
-
query_cache_size: 查询缓存大小:这表示将分配多少内存。有些人认为使用的内存越多越好,但这只是一种误解。这完全取决于数据库大小、查询类型和读写比例、硬件、数据库流量以及其他因素。
query_cache_size
的理想值在 100 MB 到 200 MB 之间;然后,您可以监控性能和查询缓存所依赖的其他变量(如前所述),并调整其大小。我们在一个中等流量的 Magento 网站上使用了 128 MB,效果非常好。将该值设为0
以禁用查询缓存。 -
query_cache_limit:定义要缓存的查询数据集的最大大小。如果查询数据集的大小大于此值,则不会被缓存。可以通过找出最大的
SELECT
查询及其返回数据集的大小来猜测该配置的值。