首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于可用内存的MySQL调优

基于可用内存的MySQL调优
EN

Stack Overflow用户
提问于 2017-01-27 06:51:29
回答 2查看 503关注 0票数 1

亲爱的,我已经通过了这个文章,但是我无法在CentOS6.2上找到名为'/proc/user_beancounters'的文件,是否有任何标准计算来根据avaiable设置my.cnf以提高查询的性能。

如果有任何方法,那么假设我得到了8GB RAM,那么MyISAMInnodb的配置将是什么,以获得最佳的可用内存性能呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-28 19:04:52

我必须查找/proc/user_bean计数器,它似乎是对OpenVz实现的Linux的扩展。我怀疑它是否会出现在普通的CentOS Linux中。

首先,我推荐你不要使用MyISAM。它不是酸存储引擎,它使用表锁定。MyISAM的唯一好处是它可以将数据存储在比InnoDB更少的磁盘空间中(取决于您的表结构)。

没有神奇的调优值可以使所有工作负载优化。如果有,它们将不是可调的选项,它们只是预先设置在正确的值上。

通常情况下,您拥有的数据比可用RAM中的数据还要多,因此,考虑到服务器上RAM的其他用途,折衷方案是尽可能高地设置innodb_buffer_pool_size。例如,如果您有Apache或Java应用程序、memcached或其他RAM用户,请确保他们有他们需要的东西。

对数据运行所需的查询也是一个重要的考虑因素。如果您有大量的查询可以一直扫描您的表,那么很难将它们保存在缓冲池中。但是,典型的OLTP工作负载集中在“热点”上,并在80%的时间内查询20%的数据。缓存在这里有很大帮助,因为最频繁请求的数据会被缓存。

对于OLAP工作负载,很难进行优化,因为您的查询可能扫描大量数据库,而且您的数据库比可用的RAM还要大。

因此,基本准则是:

  • 如果你能帮忙的话,不要使用MyISAM。
  • 确保其他进程有他们需要的RAM。
  • 在内存的剩余部分中,尽可能多地提供给innodb_buffer_pool_size。人们经常猜测80%的可用内存。请记住,缓冲池比您设置的值使用的值约为+10%。
  • 如果您的数据库小于RAM,则使缓冲池大于数据库大小没有任何好处。InnoDB只缓存每个数据库页一次。
票数 0
EN

Stack Overflow用户

发布于 2017-01-28 18:38:00

8GB内存(任何操作系统、任何硬件),InnoDB和MyISAM都没有在机器上运行的其他应用程序:

代码语言:javascript
复制
key_buffer_size = 800M           -- for caching MyISAM indexes
innodb_buffer_pool_size = 2500M  -- for caching InnoDB data and indexes

如果您有其他应用程序运行,这些数字可能需要降低一些。

http://mysql.rjweb.org/doc.php/memory

将其他事情置于默认状态,直到出现一些特定的问题。

/proc/包含系统信息,而不是文件本身。什么是user_beancounters

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41888358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档