首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使执行计划尽可能准确

如何使执行计划尽可能准确
EN

Stack Overflow用户
提问于 2022-10-13 10:31:13
回答 1查看 30关注 0票数 0

每天晚上,我都会转储我的PROD环境(MySQL8.0.23),以便在我的测试环境中导入它。在这两个系统上,硬件和mysql配置是相同的。

我注意到一些查询(在转储之后执行,当两个数据库仍然对齐时)在这两个系统上以不同的方式运行,具有不同的执行计划,当然还有不同的性能。

我的猜测是,测试环境表现得更好,因为每个表都是从头创建的,因此表和索引的统计数据更准确,而PROD在白天加载了大量的插入、更新和删除。

有什么办法能让PROD表现得和以前一样吗?

我试着在每个表上运行、优化和分析(其中大多数是InnoDB),但执行计划仍然不同

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-10-14 00:40:36

  • 测试上的新负载需要执行更多的I/O操作,因为“缓存”最初是空的。(Cf InnoDB的buffer_pool.)我预计这个测试的速度可能是原来的10倍。再次运行相同的查询以查看它的速度,up.
  • EXPLAIN作出估计;它通常是不一致的。不要担心。
  • 如果PROD很忙,但是测试只是运行一个查询,PROD可能会慢一些。这是由于正在进行的其他事情,on.
  • OPTIMIZE本质上根本不需要InnoDB;不要浪费时间在it.
  • ANALYZE上,有时会说服EXPLAIN提供不同的查询计划。这证明不多。
  • 下降和再导入不太可能解决任何问题。

给我们举一个明显不同的例子。当给出一个具体的例子时,我们更有可能发现一些东西。提供

query

  • EXPLAIN选择--在查询的两个servers

  • Timing上,

  • 显示了查询所涉及的表的创建表.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74054280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档