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


28

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

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

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

Answers:


20

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


11
实际上,该命令是show status; 查看状态变量,例如Open_tablesOpened_tablestable_cache在最近的MySQL版本中似乎已被删除。
马特·芬威克

5

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

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

MySQL手册中查找更多信息和指导。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.