2011-11-04 79 views
5

我有一个漂亮的香草mysql 5.1安装程序,我正试图调整它。我发现这个handy scriptmysql调优变量 - 当前&默认值

它提出了以下建议:

query_cache_limit (> 1M, or use smaller result sets) 
query_cache_size (> 16M) 
join_buffer_size (> 128.0K, or always use indexes with joins) 
table_cache (> 64) 
innodb_buffer_pool_size (>= 14G) 

在对这些意味着什么读了什么,他们目前被设置,我发现我可以运行“中mysqladmin变量”

我现在的值是:

query_cache_limit      | 1048576 
query_cache_size      | 16777216 
join_buffer_size      | 131072  
innodb_buffer_pool_size     | 8388608 

我如何阅读这些,他们是字节?那么1M,16M,13M和8M?

我的箱子只有4G的拉姆,在正常的日子里只有几百megs没有记忆。我应该遵循这些建议,并做到:

#innodb_buffer_pool_size = 15G 
#table_cache = 128 
#join_buffer_size = 32M 
#query_cache_size = 64M 
#query_cache_limit = 2M 

林由15G迷惑,这是一个磁盘空间的东西,而不是记忆的事情吗?如果是这样,那么这些建议不是很好吗?

我应该为我的盒子获得更多的记忆吗?我的数据库大小是34Gigs,我使用所有innodb,我有71个表,其中4个是巨大的,其余的都很小。我一直在考虑将重要版本迁移到SOLR并从那里进行所有查询,但是想要了解我可以通过基本调整做些什么。

感谢 乔尔

+0

我发现这是一个有用的阅读http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/ –

+0

这可能会更好问在serverfault.com –

+0

我读了perfblog,但仍然困惑,我认为它假定你已经知道那个变量是什么和做什么。 – Joelio

回答

0

你不应该设置你的InnoDB缓冲池比你的可用内存更高。该脚本可能建议根据您的表格中的记录数量和它们的物理尺寸。 Innodb的性能是基于内存的,如果它能适应内存中的索引,性能会迅速下降。所以设置innodb_buffer_pool_size高几乎总是很好的建议。

Innodb不是所有涉及到mysql的最佳表类型。非常大的表格通常有很多插入,但很少读取和更新(即日志记录)与MyISAM表格相比更好。 Innodb的非常活跃的表格(插入,更新,删除,选择)效果更好。这个建议可能会引发一场激烈的战争,这是一般性建议。

但这就是说,没有脚本会告诉你你的设置应该是什么。它只能成为一个最好的客人。最佳设置基于您的数据访问模式。你真的必须了解所有变量是什么。除了手册之外,mysqlperformanceblog.com是了解有关mysql的绝佳场所。

在mysql中,使用“show variables”和“show status”来查看发生了什么。你也可以运行“显示innodb状态”,但是如果你不知道变量是什么,你可能不会理解那个输出。

+0

谢谢,这似乎是一些很好的建议,我升级了我的VM并增加了更多的内存,运行我有大约8个演出免费,所以我设置innodb_buffer_pool_size为4G。当我启动mysql时,我预计它会使用这个4G内存,但我没有看到它。现在,在使用68m居民和331m互换后,整夜运行大批量作业。我做错什么了吗? – Joelio

+0

我读了你的“show variables”并试过了,mysql仍然显示innodb_buffer_pool_size的旧号码......不知道我做错了什么,我把这些变量添加到my.cnf并重新启动了mysql .. – Joelio

+0

好吧,我想它出来了,我把变量放在my.cnf的错误部分,感谢您检查show变量的想法。 – Joelio