恕我直言,你应该能够去
innodb_buffer_pool_size=5G
那将是62.5%的RAM,其中有足够的RAM用于服务器OS,另外还有用于DB连接的内存
@kvisle建议使用mysqltuner.pl。该脚本非常适合判断专用于join_buffer_size,sort_buffer_size,read_buffer_size和read_rnd_buffer_size的RAM数量。将这4个缓冲区加在一起就乘以max_connections。该答案将添加到静态缓冲区(innodb_buffer_pool_size + key_buffer_size)。报告合并的总和。如果总和超过RAM的80%,则必须减小这些缓冲区的大小。mysqltuner.pl在这方面将非常有帮助。
由于所有数据都是InnoDB,因此可以使key_buffer_size(用于MyISAM索引的键缓存缓冲区)非常低(我建议为64M)。
这是我在DBA StackExchange中发表的帖子,用于计算建议的innodb_buffer_pool_size大小。
更新2011-10-15 19:55 EDT
如果您知道将有5GB的数据,那么我的第一个建议是确定。但是,我忘了添加一件事:
[mysqld]
innodb_buffer_pool_size=5G
innodb_log_file_size=1280M
日志文件大小必须是InnoDB缓冲池的25%
更新2011-10-16 13:36 EDT
25%规则严格基于使用两个日志文件。虽然可以使用多个innodb日志文件,但通常两个文件效果最佳。
其他人表示使用25%
但是,公平地说,最初的InnoBase Oy公司的某人表示不使用25%规则,因为具有更大的InnoDB缓冲池。
自然,当拥有大量RAM时,25%规则将不起作用。实际上,仅使用两个日志文件所允许的最大innodb_log_file_size为2047M,因为日志文件的组合大小必须小于4G(4096M)
案例介绍:我的一位雇主客户有一个带有192GB RAM的数据库服务器。无法获取48G日志文件。我将innodb日志文件的最大文件大小设置为2047M。@Kvisle对我的回答的评论只是提供了一个链接,指出您不必将自己限制为两个日志文件。如果您有N个日志文件,则它们总共不能达到4G。我的25%规则只是一个完美的世界(8 GB或更少的DB Server)。