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

我有一个运行IIS7和MySQL的8GB内存的Windows 2008服务器。 我一直在跟踪服务器上的内存,CPU和磁盘使用情况,我发现MySQL只使用了250MB的内存,尽pipe我有大量的免费内存,但仍然非常繁忙。

在SQL Server中,我可以很容易地设置我想要使用的内存量,我正在寻找在MySQL中相同的设置。

我如何configurationMySQL使用更多的内存,并减lessCPU和磁盘的使用?

table_cache是要改变的最有用的configuration指令。 每次MySQL访问一个表时,它都会将表加载到caching中。 如果你有大量的表格,把它们caching起来会更快。

运行以下命令查看您的服务器variables:

 show status; 

并寻找variablesopen_tables 。 如果这与table_cache值相同,并且opened_tables不断增加,则需要增加configuration文件中的table_cache值。 通过在高峰时段对这些variables进行实验,您将find一个平衡点。 您希望对其进行configuration,以便在高峰时刻,即使服务器长时间运行, opened_tables数量仍然很less。

key_buffer_size也是一个很好的实验variables。 这个variables会影响索引缓冲区大小,并且使这个variables更大,增加了MySQL的索引处理速度。 您可以使用show variables; 再次命令,并将key_read_requestskey_reads进行比较。 理想情况下,您希望这两个variables之间的比率尽可能低,您可以通过增加key_buffer_size的大小来实现。 如果将此variables设置得更高,则直接进入和退出磁盘的写入和读取次数将减less,这是您最关心的问题。

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

如果你有任何InnoDB表,你可能会想看看增加innodb_buffer_pool_sizeinnodb_buffer_pool_sizeread_buffertable_cache以及innodb_buffer_pool_size 。 其中一些值可以增加很长的时间(甚至两个数量级),特别是给你的硬件。 MySQL的默认是非常保守的,似乎是针对大约十年前的常见混合使用桌面。 哦,并且被警告说32位版本将会在使用超过2GB的RAM时遇到麻烦。

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