MySQL 数据库

MySQL 是网络上最常用的关系数据库管理系统(RDMS)。它是开源的,并有一个免费的社区版本。它提供了企业级数据库所能提供的所有功能。

MySQL 安装时提供的默认设置可能对性能不太有利,但总有办法对这些设置进行微调,以提高性能。此外,请记住数据库设计对性能的影响很大。设计不当的数据库会影响整体性能。

在本节中,我们将讨论如何提高 MySQL 数据库的性能。

我们将修改 MySQL 配置的 my.cnf 文件。该文件在不同的操作系统中位于不同的位置。此外,如果您在 Windows 上使用的是 XAMPP、WAMP 或其他跨平台网络服务器解决方案栈包,该文件也会位于相应的文件夹中。无论何时提到 my.cnf,都假定无论使用哪个操作系统,该文件都是打开的。

查询缓存

查询缓存是 MySQL 的一项重要性能功能。它可以缓存 SELECT 查询和结果数据集。当出现相同的 SELECT 查询时,MySQL 会从内存中获取数据,以便更快地执行查询,从而减少数据库的负载。

要检查 MySQL 服务器上是否启用了查询缓存,请在 MySQL 命令行中发出以下命令:

SHOW VARIABLES LIKE 'have_query_cache';

上述命令将显示以下输出:

image 2023 11 05 15 32 53 421

前面的结果集显示已启用查询缓存。如果已禁用查询缓存,则值为 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_size0,则不分配内存,并禁用查询缓存。

      如果 query_cache_size 大于 0,则启用查询缓存,分配内存,所有缓存不能超过 query_cache_limit 值或未使用 SQL_NO_CACHE 选项的查询。

    • 如果 query_cache_type 值为 0query_cache_size0,则不分配内存,并禁用缓存。如果 query_cache_size 大于 0,则会分配内存,但不会缓存任何内容,即禁用缓存。

  • query_cache_size: 查询缓存大小:这表示将分配多少内存。有些人认为使用的内存越多越好,但这只是一种误解。这完全取决于数据库大小、查询类型和读写比例、硬件、数据库流量以及其他因素。query_cache_size 的理想值在 100 MB 到 200 MB 之间;然后,您可以监控性能和查询缓存所依赖的其他变量(如前所述),并调整其大小。我们在一个中等流量的 Magento 网站上使用了 128 MB,效果非常好。将该值设为 0 以禁用查询缓存。

  • query_cache_limit:定义要缓存的查询数据集的最大大小。如果查询数据集的大小大于此值,则不会被缓存。可以通过找出最大的 SELECT 查询及其返回数据集的大小来猜测该配置的值。