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

hol*_*ira 32 mysql windows-server-2008 iis-7

我有一台运行 IIS7 和 MySQL 的带有 8GB RAM 的 Windows 2008 服务器。我一直在跟踪服务器上的内存、cpu 和磁盘使用情况,我发现 MySQL 只使用了 250MB 的 RAM,使磁盘非常繁忙,即使我有大量空闲内存。

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

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

小智 23

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

通过运行查看您的服务器变量:

show status;
Run Code Online (Sandbox Code Playgroud)

并查看变量open_tables。如果这与您的table_cache值相同,并且opened_tables一直在上升,那么您需要增加table_cache配置文件中的值。通过在高峰时段尝试这些变量,您会找到平衡点。您希望对其进行配置,以便在高峰时间,opened_tables即使在服务器已启动很长时间后,仍有少量的。

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

  • 实际上命令是`show status;`[查看状态变量](http://dev.mysql.com/doc/refman/5.5/en/server-status-variables.html)例如`Open_tables`和`Opened_tables `. `table_cache` 似乎已在最近的 MySQL 版本中删除。 (13认同)

sta*_*san 6

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

你可能会想看看在增加key_buffer_sizesort_bufferread_buffertable_cache对于初学者和可能innodb_buffer_pool_size,如果您有任何InnoDB表。其中一些值可以大大增加(甚至两个数量级),特别是考虑到您的硬件。MySQL 的默认设置非常保守,似乎是针对大约十年前常见的混合使用桌面。哦,请注意,32 位版本在使用超过 2GB 的 RAM 时会遇到问题。

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