IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 记一次线上sql优化从9s到400ms的过程 -> 正文阅读

[大数据]记一次线上sql优化从9s到400ms的过程

? ? 最近线上发版的时候,发现有个接口执行特别慢,前端App的表现就是没有任何的反应,然后从pinpoint上追查接口发现是sql执行特别慢,平均都是在9s左右。这里由于使用了分页查询的 Mybatis interceptor所以同样的sql还需要查询一次count,导致整个耗时在9s左右,单个sql的耗时在5-6秒左右。

? ? 线上有一张订单表数据大概是65万条数据,另一张订单配送任务表数据大概也是65万条数据,有一条sql的 inner join两张表,执行的sql大致如下:

?基于我对join优化的本能(join优化分析博客:Mysql - join(索引和非索引)的实现原理和优化手段也可以参考:https://www.processon.com/view/link/5ff1684ee0b34d19e4f89031),首先想到的就是是否使用了 Index Nested Loop Join,但是一看两个join on的字段都是有索引的。就先看了一下执行计划,如下:

? ? 该执行计划显示一张 65万的数据走了全表扫描,使用了临时表、使用了排序(注意这里写的 filesort可能是内存排序不一定是文件排序)。出于本能我想到了将小表作为驱动表,但是本能也是将两张表的位置进行了交互,但是发现效果没有太大区别。

? ? 我们赶快翻我写的processon上的优化注意点,试着将 inner join换成了 straght_join,就这一个小小的改动整个耗时从 6s变成了 400ms,我一下子就懵了,马上看了一下执行计划,如下:

?两个表的 ALL、ref变成了 eq_ref、ref,并且两个的key都使用了索引,Extra这里没有了临时表,增加了 Usingwherecondition。事后翻盘如果是两个表的数据相差很大这个效果是接受的,但是两个表的数据量都相当,这个性能提升和执行计划还是有点懵的,希望高手帮解惑。

?在列一下从pinpoint上看到的使用 inner joinstraight_join的性能对比:

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-14 02:03:13  更:2022-01-14 02:03:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:35:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码