mysql调整变量 - current&默认

时间:2011-11-04 00:31:58

标签: mysql performance database-performance

我有一个非常香草的mysql 5.1设置,我正在尝试调整它。我找到了这个handy script

提出了以下建议:

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 variables”

我目前的价值是:

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

我如何读取它们,它们是Kbytes吗?那么是1M,16M,13M还是8M?

我的盒子只有拉姆的4G,而在正常的一天只有几百兆的内存。我应该遵循这些建议并做:

#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并从那里做所有的查询,但是想看看我能用基本的调整做些什么。

感谢 乔尔

1 个答案:

答案 0 :(得分:0)

您不应将innodb缓冲池设置为高于可用内存。该脚本可能建议根据表中的记录数和物理大小。 Innodb的性能非常基于内存,如果它能够适应内存中的索引,性能将迅速下降并显着下降。所以将innodb_buffer_pool_size设置为高几乎总是很好的建议。

对于mysql来说,Innodb不是最好的表类型。非常大的表通常具有大量插入,但很少读取和更新(即日志记录)作为MyISAM表更好。 Innodb可以提供非常活跃的表格(插入,更新,删除,选择)。这个建议可能会发生火焰战争,这是一般性建议。

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

在mysql中,使用“show variables”和“show status”来查看正在发生的事情。您也可以运行“show innodb status”,但如果您不知道变量是什么,则可能无法理解该输出。