RPK*_*RPK 8 mysql innodb performance mysql-5.5
我查看了 my.ini 并看到了各种默认设置。我的数据库在一台独立的 PC 上运行。我想总体上优化 InnoDB 和 MySQL 的性能以提高性能。没有磁盘空间限制。我应该更改哪些默认设置以优化以获得更好的性能、可靠性和可能的时间点备份 [高可用性]。
已编辑
目前,每当我通过 MySQL Administrator 上的维护运行“优化表”时,它都会显示:
表不支持优化,改为重新创建+分析
在所有桌子上。我所有的表都是InnoDB,但为什么不支持Optimize?
Rol*_*DBA 12
调优 InnoDB 的方式是围绕
这是我在过去 5 年中使用的一个公式,用于根据 InnoDB 数据和索引页使用的磁盘空间计算 InnoDB 缓冲池:
SELECT CONCAT(ROUND(KBS/POWER(1024,IF(Power1024<0,0,
IF(Power1024>3,0,Power1024)))+0.49999),SUBSTR(' KMG',IF(Power1024<0,0,
IF(Power1024>3,0,Power1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,(SELECT 2 Power1024) B;
Run Code Online (Sandbox Code Playgroud)
当然,我说的是InnoDB当前使用的可用内存和磁盘空间的函数。从这里开始,只需使用常识。上述查询中的推荐数量不应超过已安装 RAM 的 75% !!!这是调整 InnoDB 缓冲池大小的最简单的经验法则。
您还应该将innodb_flush_method设置为 O_DIRECT,因为它将提供稳定的 InnoDB 同步写入。我还写了一篇关于如何为 InnoDB 优化磁盘存储的文章。
关于消息表不支持优化,而是执行重新创建+分析,您收到该错误消息的原因是存储引擎是InnoDB。从机制上讲, OPTIMIZE TABLE 只是将表复制到临时表并执行ANALYZE TABLE。
实际上,针对 InnoDB 的 ANALYZE TABLE 完全没有用。即使您在 InnoDB 表上运行 ANALYZE TABLE,InnoDB 存储引擎也会一遍又一遍地深入索引以获取基数近似值,从而破坏您刚刚编译的统计信息。事实上,Percona 对 ANALYZE TABLE 进行了一些测试,也得出了同样的结论。
以下是我在这一年中发表的关于 InnoDB Tuning 的其他帖子