mysql tuner报告MysqL可以使用166%的已安装ram,我如何限制RAM的使用?
@H_502_2@[!!] Maximum possible memory usage: 426.8M (166% of installed RAM)
你可以配置
@H_502_2@>所有MyISAM@H_403_10@>所有InnoDB@H_403_10@> MyISAM和InnoDB的混合物
@H_502_2@在为任一引擎分配内存之前,最好反思每个存储引擎的缓存
@H_502_2@配置MYISAM
@H_502_2@使用的主要机制是密钥缓存.它仅缓存来自.MYI文件的索引页面.要调整密钥缓存的大小,请运行以下查询:
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(PowerOf1024<0,IF(PowerOf1024>3,PowerOf1024)))+0.4999),SUBSTR(' KMG',PowerOf1024))+1,1)) recommended_key_buffer_size FROM (SELECT LEAST(POWER(2,32),KBS1) KBS FROM (SELECT SUM(index_length) KBS1 FROM information_schema.tables WHERE engine='MyISAM' AND table_schema NOT IN ('information_schema','MysqL')) AA ) A,(SELECT 2 PowerOf1024) B;@H_502_2@根据您当前的数据集,这将给出MyISAM密钥缓存的推荐设置(key_buffer_size)(the query will cap the recommendation at 4G (4096M).对于32位操作系统,4GB是限制.对于64位,8GB. @H_502_2@配置InnoDB @H_502_2@使用的主要机制是InnoDB缓冲池.它缓存来自InnoDB表的数据和索引页面.要调整InnoDB缓冲池的大小,PowerOf1024)))+0.49999),1)) recommended_innodb_buffer_pool_size FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables WHERE engine='InnoDB') A,(SELECT 2 PowerOf1024) B; @H_502_2@这将根据您当前的数据集给出InnoDB缓冲池(innodb_buffer_pool_size)大小的推荐设置. @H_502_2@不要忘记调整InnoDB日志文件(ib_logfile0和ib_logfile1)的大小. MysqL源代码放置所有InnoDB日志文件的组合大小的上限必须< 4G(4096M). (注意:Percona Server二进制文件超过了这一点.我最近使用innodb_log_file_size设置了一个带有4G的大型数据库服务器,用于单个InnoDB日志文件) @H_502_2@为简单起见,只给出两个日志文件,以下是如何调整它们的大小: @H_502_2@>步骤1)将innodb_log_file_size = NNN添加到/etc/my.cnf@H_403_10@(NNN应为innodb_buffer_pool_size的25%或2047M,以较小者为准)@H_403_10@>步骤2)服务MysqL停止@H_403_10@>步骤3)rm / var / log / MysqL / ib_logfile [01]@H_403_10@>步骤4)服务MysqL start(重新创建ib_logfile0和ib_logfile1) @H_502_2@警告 @H_502_2@两个查询的结尾都是一个内联查询:(SELECT 2 PowerOfTwo)B @H_502_2@>(SELECT 0 PowerOf1024)给出字节设置@H_403_10@>(SELECT 1 PowerOf1024)以千字节为单位给出设置@H_403_10@>(SELECT 2 PowerOf1024)以兆字节为单位给出设置@H_403_10@>(SELECT 3 PowerOf1024)给出以千兆字节为单位的设置@H_403_10@>不接受0或大于3的功率 @H_502_2@结语 @H_502_2@常识无可替代.如果内存有限,存储引擎混合或其组合,则必须针对不同的方案进行调整. @H_502_2@如果您有2GB RAM和16GB InnoDB,请将512M分配为innodb_buffer_pool_size. @H_502_2@如果您有2GB RAM和4GB MyISAM索引,请将512M分配为key_buffer_size. @H_502_2@如果您有2GB RAM和4GB MyISAM索引和16GB InnoDB,请将512M分配为key_buffer_size,将512M分配为innodb_buffer_pool_size. @H_502_2@可能的场景是无止境的 @H_502_2@请记住,无论您分配什么,请为数据库连接和操作系统留出足够的RAM.