亲爱的所有我已经完成了这个article但是我无法在我的Centos 6.2上找到名为'/proc/user_beancounters'
的文件,是否有任何标准计算以便根据可用的ram设置my.cnf
提高查询性能。
如果有任何方法,那么说我得到8GB RAM
,那么my.cnf
和MyISAM
的{{1}}配置最佳使用可用内存的性能?
答案 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
如果您正在运行其他应用,则可能需要降低这些数字。
将其他内容保留为默认值,直到出现一些特定问题。
/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。
所以基本准则是:
innodb_buffer_pool_size
。人们经常猜测可用内存的80%。请记住,缓冲池使用的值比您设置的值大约+ 10%。