我在 8 核虚拟机、8 GB 内存上有大小为 1.3 GB 的 MySQL 数据库,但我在优化配置时遇到了麻烦。有很多小行和很多连接正在进行。
我发现了这个工具:https ://tools.percona.com/wizard ,但它所建议的差异只会使结果恶化。他们主要建议将 InnoDB 缓冲池增加到 6 GB。目前我有 1 GB 缓冲池,但当我尝试增加它时,性能实际上更差。为什么会这样?
有没有办法强制 MySQL 将整个数据库缓存在内存中,这样它就不会卡在如此高的 IO 等待级别上?
其余设置似乎没有产生这种差异。
my.cnf的当前状态:https ://gist.github.com/knyttl/ac6efe5c0730dd34a5cc
看看你的 my.cnf,你有很多东西的默认值。您迫切需要的是对 InnoDB 基础设施的全面清理。单击此处查看 InnoDB 基础结构的图示。
步骤 01) 运行此查询
这将告诉您设置 innodb_buffer_pool_size 有多大(以 MB 为单位)。
假设答案是 1024。
步骤 02) 运行此查询
这将告诉您设置 key_buffer_size 有多大(以 MB 为单位)。
假设答案是 64。
步骤 03:运行此查询
这将在关闭期间对事务日志中剩余的任何事务执行完整的事务提交。事务日志是
/var/lib/mysql/ib_logfile0
/var/lib/mysql/ib_logfile1
第 04 步:将所有数据转储到文本文件中
步骤 05:关闭 MySQL
第 06 步:将以下内容添加到
my.cnf
如果您使用的是 MySQL 5.5(或启用了 InnoDB 插件的 MySQL 5.1),请添加这些
如果您使用的是 MySQL 5.0,请添加这些
请注意我选择了innodb_log_file_size到innodb_buffer_pool_size的 25%
步骤 07:为新的 InnoDB 文件腾出空间
步骤 08:启动 MySQL
STEP 09 : 加载数据
第 10 步:如果一切运行良好,则运行以下命令:
全部通过 InnoDB Cleanup 完成。
我之前曾多次建议过这样的 InnoDB 改进
Oct 29, 2010
: Howto: 清理 mysql InnoDB 存储引擎?Apr 13, 2011
:如何缩放 my.cnf 设置和变量以从 16GB 服务器移动到 128GBFeb 03, 2012
: MySQL InnoDB表的定时优化Mar 25, 2012
:为什么InnoDB将所有数据库存储在一个文件中?Apr 01, 2012
: innodb_file_per_table 是否可取?Jul 20, 2012
:删除Magento MySQL数据库后回收磁盘空间试试看 !!!