我的设置(示例)
我正在使用以下规格在Amazon High CPU超大型EC2实例上运行Linux:
我有MyISAM存储引擎上运行的两个大型MySQL数据库。 一个是2GB,另一个是500MB。 我想确保MySQL使用尽可能多的RAM,因为它可以/需要最大限度地提高查询速度。 我知道有一些MySQL内存configuration选项,如MyISAM_sort_buffer_size,和MyISAM_sort_buffer_size,但我不熟悉优化这些。
质询
这是一个很难的话题。 这里不能回答,整本书都写了这个。 我build议让你的innodb_buffer_pool_size足够大。 如果您使用的是myisam表,请检查key_buffer_size。 还应该考虑table_cache和max_connections。
这里有一些可以帮助你的东西:
http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/ http://www.mysqlperformanceblog.com/2007/11/01/innodb- performance-optimization-basics / http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
编辑:
正如@ drew010所说,考虑数据库的使用types非常重要。 对重读数据库的调整与重写相比是非常不同的。 另外,你可以考虑其他策略。 像Memcached,nosql数据库等
如果你需要确保MySQL使用所有需要的内存,你必须切换到InnoDB。 除非您使用MySQL FULLTEXTsearchfunction,否则不会有任何严重的问题。
在MyISAM的情况下使用了一些caching,包括内部的MySQLcaching和系统caching。 如果你想获得最好的性能,你需要给任何一个caching留下空间,但是我仍然不推荐MyISAM用于这个目的,特别是如果你的数据库写的很重的话:MyISAMlocking整个表,而InnoDB只locking受影响的行。
即使你把你所有的数据库都放到内存中,由于索引不足或者其他原因,仍然可能会运行缓慢的查询。