如何增加 MySQL 服务器的内存使用量来提高速度?

如何增加 MySQL 服务器的内存使用量来提高速度?

我有一台运行 IIS7 和 MySQL 的 Windows 2008 服务器,内存为 8GB。我一直在跟踪服务器上的内存、CPU 和磁盘使用情况,我发现 MySQL 只使用了 250MB 的内存,尽管我有很多空闲的内存,但磁盘仍然非常繁忙。

在 SQL Server 中,我可以轻松设置我希望它使用的内存量,我在 MySQL 中寻找相同的设置。

如何配置 MySQL 以使用更多内存并减少 CPU 和磁盘使用率?

答案1

table_cache是最有用的配置指令。每次 MySQL 访问表时,它都会将表加载到缓存中。如果您有大量表,则将它们缓存起来会更快。

通过运行以下命令查看您的服务器变量:

show status;

并查看变量open_tables。如果该值与您的值相同table_cache,并且opened_tables不断上升,则您需要table_cache在配置文件中增加该值。通过在高峰时段试验这些变量,您将找到平衡点。您需要对其进行配置,以便在高峰时段,opened_tables即使服务器已经运行了很长时间, 的数量也会很低。

key_buffer_size也是一个值得尝试的好变量。此变量会影响索引缓冲区大小,增大此变量可提高 MySQL 的索引处理速度。您可以show variables;再次使用命令查看变量,并与 进行比较key_read_requestskey_reads理想情况下,您希望这两个变量之间的比率尽可能低,您可以通过增加 的大小来实现这一点key_buffer_size。如果将此变量设置得更高,则直接写入和读取磁盘的次数将减少,而这正是您主要关心的问题。

答案2

您需要更改my.cnf文件中的值并重新启动 MySQL,尽管您也可以在 MySQL 运行时更改其中的许多值('SET GLOBAL VARIABLE=价值')。

您可能希望首先增加key_buffer_sizesort_buffer和,如果您有任何 InnoDB 表,则可能read_buffer增加。其中一些值可以增加很多(甚至两个数量级),尤其是考虑到您的硬件。MySQL 的默认值非常保守,似乎是针对大约十年前的常见混合用途桌面。哦,请注意,32 位版本在使用超过 2GB 的 RAM 时会遇到麻烦。table_cacheinnodb_buffer_pool_size

在看MySQL 手册以获取更多信息和指导。

相关内容