根据可用的RAM调整MySQL

时间:2017-01-27 06:51:30

标签: mysql database-performance

亲爱的所有我已经完成了这个article但是我无法在我的Centos 6.2上找到名为'/proc/user_beancounters'的文件,是否有任何标准计算以便根据可用的ram设置my.cnf提高查询性能。

如果有任何方法,那么说我得到8GB RAM,那么my.cnfMyISAM的{​​{1}}配置最佳使用可用内存的性能?

2 个答案:

答案 0 :(得分:0)

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

key_buffer_size = 800M           -- for caching MyISAM indexes
innodb_buffer_pool_size = 2500M  -- for caching InnoDB data and indexes

如果您正在运行其他应用,则可能需要降低这些数字。

Reference

将其他内容保留为默认值,直到出现一些特定问题。

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

答案 1 :(得分:0)

我必须查找/ proc / user_beancounters,它似乎是为OpenVz实现的Linux的扩展。我怀疑它会出现在普通的CentOS Linux中。

首先,我建议你don't use MyISAM。它不是ACID存储引擎,它使用表锁定。 MyISAM的唯一好处是它可以在比InnoDB更少的磁盘空间中存储数据(取决于您的表结构)。

没有神奇的调整值可以使所有工作负载达到最佳状态。如果有,他们不会是可调选项,他们只是预先设置正确的值。

通常情况下,您拥有的数据量超过可用RAM的数量,因此,如果您的服务器上有其他RAM使用,那么妥协就是将innodb_buffer_pool_size设置为您可以提供的最高值。例如,如果您有Apache或Java应用程序或memcached或其他RAM用户,请确保他们拥有所需的内容。

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

为OLAP工作负载进行优化更加困难,您的查询可能扫描大量数据库,并且您的数据库大于可用RAM。

所以基本准则是:

  • 如果可以提供帮助,请不要使用MyISAM。
  • 确保其他进程拥有所需的RAM。
  • 剩余的RAM,尽可能多地提供给innodb_buffer_pool_size。人们经常猜测可用内存的80%。请记住,缓冲池使用的值比您设置的值大约+ 10%。
  • 如果您的数据库小于RAM,那么使缓冲池大于数据库大小并没有任何好处。 InnoDB只缓存每个数据库页面一次。