it-swarm.cn

如何增加MySQL Server中的内存使用量以提高速度?

我有一台Windows 2008服务器,具有8GB的RAM)运行IIS7和MySQL。我一直在跟踪服务器上的内存,cpu和磁盘使用情况,发现MySQL仅使用250MB的RAM,即使我有很多空闲的RAM,也使磁盘非常繁忙。

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

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

30
holiveira

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的大小来实现。如果将此变量设置得更高,则直接在磁盘上进行的读写操作将更少,这是您主要关心的问题。

20
James

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

如果您有InnoDB表,则可能会想增加key_buffer_sizesort_bufferread_buffertable_cache,对于入门者来说可能还有innodb_buffer_pool_size。其中一些值可以增加很长的时间(甚至两个数量级),特别是在给定硬件的情况下。 MySQL的默认值非常保守,似乎针对大约十年前的普通混合用途台式机。哦,请注意,32位版本将无法使用超过2GB的RAM。

查看 MySQL手册 了解更多信息和指导。

6
staticsan