我有一个运行 IIS7 和 MySQL 的 8GB RAM 的 Windows 2008 服务器。我一直在跟踪服务器上的内存、cpu 和磁盘使用情况,我发现 MySQL 只使用了 250MB 的 RAM,使磁盘非常繁忙,尽管我周围有很多空闲的 ram。
在 SQL Server 中,我可以轻松设置我希望它使用的内存量,我正在 MySQL 中寻找相同的设置。
如何配置 MySQL 以使用更多内存并减少 cpu 和磁盘使用量?
我有一个运行 IIS7 和 MySQL 的 8GB RAM 的 Windows 2008 服务器。我一直在跟踪服务器上的内存、cpu 和磁盘使用情况,我发现 MySQL 只使用了 250MB 的 RAM,使磁盘非常繁忙,尽管我周围有很多空闲的 ram。
在 SQL Server 中,我可以轻松设置我希望它使用的内存量,我正在 MySQL 中寻找相同的设置。
如何配置 MySQL 以使用更多内存并减少 cpu 和磁盘使用量?
table_cache
是要更改的最有用的配置指令。MySQL 每次访问表时,都会将该表加载到缓存中。如果您有大量表,则将它们缓存起来会更快。通过运行查看您的服务器变量:
并查看变量
open_tables
。如果这与您的table_cache
值相同,并且opened_tables
一直在上升,那么您需要增加table_cache
配置文件中的值。通过在高峰时段尝试这些变量,您会找到平衡点。opened_tables
您希望对其进行配置,以便在高峰时间,即使在服务器已经运行很长时间之后,也有少量的。key_buffer_size
也是一个很好的试验变量。这个变量会影响索引缓冲区的大小,使这个变量变大会提高 MySQL 的索引处理速度。show variables;
您可以再次使用命令查看变量,并key_read_requests
与key_reads
. 理想情况下,您希望这两个变量之间的比率尽可能低,您可以通过增加key_buffer_size
. 如果您将此变量设置得更高,您将减少直接对磁盘的写入和读取,这是您主要关心的问题。您需要更改
my.cnf
文件中的值并重新启动 MySQL,尽管您也可以在 MySQL 运行时更改其中的许多值('SET GLOBAL VARIABLE= value ')。如果您有任何 InnoDB 表,您可能会想要查看增加
key_buffer_size
的 、和。其中一些值可以增加很长一段路(甚至两个数量级),尤其是考虑到您的硬件。MySQL 的默认设置非常保守,似乎是针对大约十年前的常见混合用途桌面。哦,请注意,32 位版本在使用超过 2GB 的 RAM 时会遇到问题。sort_buffer
read_buffer
table_cache
innodb_buffer_pool_size
查看MySQL 手册以获取更多信息和指导。