Igo*_*dov 7 performance mysql ubuntu
我有一个数据库“代数”,其中包含一个包含 1,033,990 行的“问题”表。记录有一个属性“已解决”,即 INT。我有一个简单的查询
select count(*) from questions where solved = 0
Run Code Online (Sandbox Code Playgroud)
我有两台 CPU 相似的服务器。在两台服务器上,表是相同的。(数据库是生产的副本)。它们在 SSD 上。一台服务器有 Ubuntu 14.04 和 MySQL 5.5.49,另一台服务器有 Ubuntu 16.04 和 MySQL 5.7.12。
问题是这个查询在 MySQL 5.5 上只需要 0.009s,但在 MySQL 5.7 上需要 0.304s。慢了 34 倍!!!
查询计划大致相似:
服务器慢:
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE questions NULL index NULL by_topic_solved 97 NULL 1033990 10.00 Using where; Using index
Run Code Online (Sandbox Code Playgroud)
快速服务器:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE questions index NULL by_topic_solved 97 NULL 1033989 Using where; Using index
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种情况让我感到困惑。我在这个新的 5.7 设置中看到了其他更复杂的性能问题,但这是在底层查询方面要解决的最简单的问题。
我正在努力找到对此的解释或从哪里开始。my.cnf 在两者之间大致相似。任何建议将不胜感激。
我已经完全理解这个问题了。改变的是,在新的 mysql 中,由于 query_cache_type = OFF 的默认设置,查询缓存被禁用。当我通过设置 query_cache_type=1 重新启用查询缓存时,更好的性能又回来了。由于我的站点使用的 SELECT 查询比 INSERT/UPDATE 查询多 100 倍,因此使用查询缓存对我来说很有意义。谢谢你指点我朝这个方向看!
| 归档时间: |
|
| 查看次数: |
9735 次 |
| 最近记录: |