小编bli*_*ile的帖子

从 5.6 升级到 5.7 后,MySQL join 的性能大幅下降

我有一个相当简单的查询,在从 MySQL 5.6.35 升级到 MySQL 5.7.12(在 AWS RDS 上运行)后变得非常慢。

SELECT DISTINCT 
  Name,d.id,deviceType,issuedBy, description,avNum,CompanyName,
  BrandName,dwNumber,quant,discDate,Type
FROM table_one d     
JOIN table_two i ON d.id = i.id;
Run Code Online (Sandbox Code Playgroud)

在 5.6 中,此查询在 90 秒内完成。升级到 5.7 后,需要 30 多分钟。每个表大约有 200 万行。

我首先比较了 5.6 和 5.7 之间的优化器设置:

# 5.6
index_merge=on
index_merge_union=on
index_merge_sort_union=on
index_merge_intersection=on
engine_condition_pushdown=on
index_condition_pushdown=on
mrr=on
mrr_cost_based=on
block_nested_loop=on
batched_key_access=off
materialization=on
semijoin=on
loosescan=on
firstmatch=on
subquery_materialization_cost_based=on
use_index_extensions=on
Run Code Online (Sandbox Code Playgroud)
# 5.7
Optimizer settings in 5.7:
index_merge=on
index_merge_union=on
index_merge_sort_union=on
index_merge_intersection=on
engine_condition_pushdown=on
index_condition_pushdown=on
mrr=on
mrr_cost_based=on
block_nested_loop=on
batched_key_access=off
materialization=on
semijoin=on
loosescan=on
firstmatch=on
subquery_materialization_cost_based=on
use_index_extensions=on …
Run Code Online (Sandbox Code Playgroud)

mysql aws mysql-5.6 mysql-5.7 amazon-rds

6
推荐指数
1
解决办法
5267
查看次数

标签 统计

amazon-rds ×1

aws ×1

mysql ×1

mysql-5.6 ×1

mysql-5.7 ×1