在 InnoDB 上显示表状态非常慢

Sey*_*our 4 mysql innodb mariadb

最近我们一直在从 MyISAM 迁移到 InnoDB,我知道 MyISAM 使用针对每个表的元信息来跟踪信息等 - 但是,数据库大约 1.8GB,在 400 多个左右的表中有 1+ 百万条记录。

问题来自像 PHPMyAdmin 这样的软件运行“SHOW TABLE STATUS FROM dbase;” 执行该命令最多可能需要 50 秒。有没有办法优化这个?(MySQL 或 MariaDB)

谢谢!

Rol*_*DBA 5

这是一个快速而肮脏的解决方案:

set global innodb_stats_on_metadata = 0;
show table status;
set global innodb_stats_on_metadata = 1;
Run Code Online (Sandbox Code Playgroud)

您希望 在之后立即打开innodb_stats_on_metadatashow table status;以便在评估涉及 InnoDB 的查询时有效地使用元数据进行查询优化器分析。不使用它会提供更稳定的查询执行计划,但索引统计信息在大量写入的环境中会很快变得陈旧。

试一试 !!!