基于可用RAM调优MySQL

基于可用RAM调优MySQL,mysql,database-performance,Mysql,Database Performance,亲爱的所有人,我已经经历了这些,但我无法在Centos 6.2上找到名为'/proc/user_beancounters'的文件,是否有任何标准计算,以便根据可用ram设置my.cnf,以提高查询性能 如果有任何方法,那么假设我获得了8GB RAM,那么MyISAM和Innodb的my.cnf的配置将如何使用可用RAM获得最佳性能 8GB RAM(任何操作系统、任何硬件)、InnoDB和MyISAM,机器上没有运行其他应用程序: key_buffer_size = 800M

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

如果有任何方法,那么假设我获得了
8GB RAM
,那么
MyISAM
Innodb
my.cnf
的配置将如何使用可用RAM获得最佳性能

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\u beancounters

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\u beancounters

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

首先,我推荐你。它不是ACID存储引擎,并且使用表锁定。MyISAM的唯一优点是它可以比InnoDB存储更少的磁盘空间(取决于您的表结构)

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

典型的情况是,您拥有的数据超过了可用RAM的容量,因此折衷方案是,考虑到服务器上RAM的其他用途,将
innodb_buffer_pool_size
设置为尽可能高的备用容量。例如,如果您有Apache、Java应用程序、memcached或其他RAM用户,请确保他们拥有他们所需要的

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

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

因此,基本准则是:

  • 如果可以的话,不要使用MyISAM
  • 确保其他进程具有所需的RAM
  • 对于剩余的RAM,请尽可能多地提供
    innodb\u buffer\u pool\u size
    。人们通常猜测可用RAM的80%。请记住,缓冲池使用的值比您设置的值高出大约+10%
  • 如果您的数据库小于RAM,那么将缓冲池设置为大于数据库的大小没有任何好处。InnoDB只缓存每个数据库页一次

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

首先,我推荐你。它不是ACID存储引擎,并且使用表锁定。MyISAM的唯一优点是它可以比InnoDB存储更少的磁盘空间(取决于您的表结构)

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

典型的情况是,您拥有的数据超过了可用RAM的容量,因此折衷方案是,考虑到服务器上RAM的其他用途,将
innodb_buffer_pool_size
设置为尽可能高的备用容量。例如,如果您有Apache、Java应用程序、memcached或其他RAM用户,请确保他们拥有他们所需要的

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

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

因此,基本准则是:

  • 如果可以的话,不要使用MyISAM
  • 确保其他进程具有所需的RAM
  • 对于剩余的RAM,请尽可能多地提供
    innodb\u buffer\u pool\u size
    。人们通常猜测可用RAM的80%。请记住,缓冲池使用的值比您设置的值高出大约+10%
  • 如果您的数据库小于RAM,那么将缓冲池设置为大于数据库的大小没有任何好处。InnoDB只缓存每个数据库页一次

这可能更适合dba论坛。您可以试试mysqltuner,它可以查询您的数据库配置,并为您提供一些不错的建议。它可以从EPEL存储库中获得。您也可以从这里下载perl脚本。我怀疑
/proc/user\u beancounters
这是您可以在他们的服务器中找到的东西,因为他们使用。这可能更适合dba论坛。您可以尝试mysqltuner,它可以查询您的数据库配置,并为您提供一些不错的建议。它可以从EPEL存储库中获得。您也可以从这里下载perl脚本。我怀疑这是什么