首页 > 解决方案 > MySQL 8.0.18:关键效率 0.0%

问题描述

我有一个奇怪的问题。我从 MySQL 5.7.x 迁移到 8.0.x - 最近升级到 8.0.18。在此之前,关键效率通常为 90% 以上,现在为 0.0%。尽管如此,性能似乎非常好(我无法区分之前和之后的区别),所以我给了这个低优先级,现在正在处理它。我对如何解决它有点茫然。

该服务器在主轴磁盘上有 16 个 CPU/16 个内核、64GB RAM、1TB Raid5 SSD + 4TB SAS。几乎所有活动都与存储在 SSD 上的数据有关……主轴磁盘是“旧”数据主要用于老化的地方。大多数活动是触发器和存储过程。系统接收数据,然后通过触发器和例程进行处理,然后通过来自外部系统的 API 调用读取数据。它不支持网站等的 CRM。

MySQL Workbench“服务器状态”视图

InnoDB my.cnf:

innodb_log_file_size            = 1G
innodb_buffer_pool_size         = 52G
innodb_buffer_pool_instances    = 16
#innodb_buffer_pool_chunk_size  = xxM
innodb_log_buffer_size          = 120M
innodb_file_per_table           = 1
innodb_page_size                = 16384
innodb_sort_buffer_size         = 16M
innodb_open_files               = 2400
#innodb_max_dirty_pages_pct      = 90  # Default = 90
innodb_flush_log_at_trx_commit  = 1
innodb_flush_method             = O_DIRECT
innodb_checksum_algorithm       = crc32
innodb_flush_neighbors          = 0
innodb_lock_wait_timeout        = 180

标签: performancecachingindexing

解决方案


嗯,这是出乎意料的。问题解决了。

我们使用的 MySQL 5.7 在 MySQL 模式中有 MyISAM 表。特别是在某个时候,之前的 DBA 将一些日志记录表从 CSV 更改为 MyISAM;general_log 和 slow_log。这是因为在这些表上执行了一些管理操作(用于 SysAdmin 的仪表板),而 MyISAM 表在执行此操作时似乎要快一些,因为它们可以被索引。升级到 8.0.18 时,这些表使用这些表的标准存储引擎重新部署;CSV - 这些没有被索引(因此我们仪表板的两个部分在 8.0.18 上比在 5.7 上慢……我一直想知道,现在我知道为什么了)。

因此,当前的 8.0.18 在任何地方都没有 MyISAM。Key_blocks_used、Key_read_requests、Key_reads、Key_write_requests、Key_writes 都永久为 0,因此 Workbench 中显示的“Key Efficiency”也是 0.0%。我会说这是一个错误或工作台中未正确/完全更新的功能。


推荐阅读