Joe*_*lio 5 mysql performance database-performance
我有一个漂亮的vanilla mysql 5.1设置,我正在尝试调整它.我找到了这个方便的脚本
它提出了以下建议:
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)
Run Code Online (Sandbox Code Playgroud)
在阅读这些意味着什么以及它们目前设定的内容时,我发现我可以运行"mysqladmin变量"
我目前的价值是:
query_cache_limit | 1048576
query_cache_size | 16777216
join_buffer_size | 131072
innodb_buffer_pool_size | 8388608
Run Code Online (Sandbox Code Playgroud)
我怎么读这些,是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
Run Code Online (Sandbox Code Playgroud)
我迷惑了15G,这是一个磁盘空间的东西,不是记忆的东西?如果是的话那么建议不是很好吗?
我应该为我的盒子获得更多内存吗?
更多信息: - 我的数据库大小是34Gigs,我使用所有innodb,我有71个表,其中4个是巨大的,其余的都很小.我一直在考虑将大的那些移动到SOLR并从那里做所有的查询,但是想看看我能用基本的调整做些什么.
谢谢乔尔
您不应将 innodb 缓冲池设置得高于可用内存。该脚本可能会根据表中的记录数及其物理大小建议这样做。Innodb 的性能很大程度上取决于内存,如果它能容纳内存中的索引,性能将会快速而明显地下降。因此,将 innodb_buffer_pool_size 设置得高几乎总是好的建议。
对于 mysql 来说,Innodb 并不是万能的最佳表类型。通常具有大量插入但很少读取和更新(即日志记录)的非常大的表最好采用 MyISAM 表。您非常活跃的表(插入、更新、删除、选择)最好使用 Innodb。这个建议可能会引起激烈的争论,而且它是通用的建议。
但话虽如此,没有脚本会告诉您您的设置应该是什么。它只能成为最好的客人。最佳设置基于您的数据访问模式。您确实必须阅读所有变量是什么。除了手册之外,mysqlperformanceblog.com 也是学习 mysql 的绝佳场所。
在 mysql 中,使用“显示变量”和“显示状态”来查看发生了什么。您还可以运行“show innodb status”,但如果您不知道变量是什么,您可能无法理解该输出。
| 归档时间: |
|
| 查看次数: |
2371 次 |
| 最近记录: |