成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

問題SQL優化:從超過300s優化到1s案例分析

數據庫 其他數據庫
今天發現有個項目應用每次一啟動后使用就會導致另外一個應用服務直接崩潰,而這兩個應用使用的是同個數據庫,經過排查可以發現是報表應用的某個查詢功能導致,而咨詢開發但卻查不出是哪條sql,那就只能靠自己排查了..下面是解決的大致過程。

概述

今天發現有個項目應用每次一啟動后使用就會導致另外一個應用服務直接崩潰,而這兩個應用使用的是同個數據庫,經過排查可以發現是報表應用的某個查詢功能導致,而咨詢開發但卻查不出是哪條sql,那就只能靠自己排查了..下面是解決的大致過程。

1、開啟慢查詢

修改my.ini配置,增加參數 

  1. slow-query-log=1  
  2. slow_query_log_file="epms-slow.log"  
  3. long_query_time=10 

修改后重啟,觀察epms-slow.log日志內容。

2、定位慢sql

重新點擊報表模塊,選擇日期后點擊查詢,等系統崩潰后,觀察日志涉及的慢查詢sql

發現問題sql如下: 

  1. select id, parent, project, name  
  2.  from zentao.zt_task  
  3.  where parent = 0  
  4.  /*and exists (select t.parent from zentao.zt_task t where t.parent > 0)*/  
  5.  and id in (  
  6.  select t.parent from zentao.zt_task t where t.parent > 0  
  7.  ); 

3、查看執行計劃 

  1. explain select id, parent, project, name  
  2.  from zentao.zt_task  
  3.  where parent = 0  
  4.  /*and exists (select t.parent from zentao.zt_task t where t.parent > 0)*/  
  5.  and id in (  
  6.  select t.parent from zentao.zt_task t where t.parent > 0  
  7.  ); 

這里可以看到因為走的全掃,每次都掃5萬條,產生笛卡爾積,5萬*5萬就導致數據庫崩潰了。

4、考慮用exists改寫sql 

  1. explain select id, parent, project, name  
  2. from zentao.zt_task t  
  3. where parent = 0 and exists (  
  4. select a.parent from zentao.zt_task a where a.parent = t.id   

這里改寫后問題還是沒解決。

5、考慮with改寫

后來發現zt_task表查詢了兩次,所以考慮with改寫來簡化,只查一次 

  1. WITH tmp AS ( SELECT * FROM zt_task ) SELECT  
  2. *   
  3. FROM  
  4.  tmp t1  
  5.  JOIN tmp t2 ON t1.id = t2.parent 

好吧,mysql5.7還不支持with改寫,只有到mysql 8版本才支持,所以這里只能放棄這種辦法了

6、用子查詢join改寫 

  1. SELECT  
  2.  distinct t1.parent,  
  3.  t1.id,  
  4.  t1.project,  
  5.  t1.NAME   
  6. FROM  
  7.  zentao.zt_task t1  
  8.  JOIN ( SELECT t.parent FROM zentao.zt_task t WHERE t.parent > 0 ) ta ON t1.id = ta.parent   
  9.  AND t1.parent =0 

這里要記得去重,改寫后查詢在1秒內得出結果,滿足需求。

總結

通過這道案例一定要記住,多表查詢的性能是很差的,當然,性能差是有一個前提的:數據量大。子查詢 = 簡單查詢 + 限定查詢 + 多表查詢 + 統計查詢的綜合體;

在之前強調過多表查詢不建議大家使用,因為性能很差,但是多表查詢最有利的替代者就是子查詢,所以子查詢(子查詢指的就是在一個查詢之中嵌套了其他的若干查詢)在實際的工作之中使用的相當的多。

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2021-09-10 08:31:36

技術Prometheus監控

2025-02-14 09:30:42

2022-09-27 08:40:44

慢查詢MySQL定位優化

2022-07-05 10:50:31

數據庫查詢實戰

2020-02-23 17:15:29

SQL分析查詢

2023-05-14 17:16:22

分類樹SpringBoot

2023-12-25 08:24:03

雙異步數據庫Excel

2024-09-29 08:21:06

2020-01-16 18:30:07

技術SQL優化

2022-06-29 09:43:14

SQL優化數據庫

2024-10-28 07:00:00

分頁查詢優化索引數據歸檔

2025-06-25 09:30:14

2022-09-19 08:41:02

數據查詢分離

2023-09-27 08:21:00

查詢分離數據API

2024-05-28 08:47:52

2024-08-30 09:31:36

2022-06-30 19:40:36

查詢接口索引優化

2017-07-18 11:12:39

環境設置內存分析Python

2025-06-27 09:05:47

2022-08-14 14:32:06

接口優化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 96av麻豆蜜桃一区二区 | 欧美日高清视频 | 日韩精品一区二区三区久久 | 日韩欧美在线观看视频 | 中文字幕一区二区在线观看 | 欧美一区免费 | 欧美成人精品在线 | 亚洲欧美视频一区二区 | 国产精品久久久久久久久免费软件 | 精品国产乱码久久久久久a丨 | 日本一区二区三区在线观看 | 国产美女久久久 | 高清一区二区三区 | 亚洲精品乱码久久久久久黑人 | 青青草社区 | 农夫在线精品视频免费观看 | 伊人一区 | 中文字幕国产视频 | 中文字幕一区二区三区不卡在线 | 国产精品国产三级国产aⅴ中文 | 二区在线观看 | 亚洲精品久久久久久一区二区 | 久久亚洲国产 | 国产美女久久 | 亚洲社区在线 | 亚洲一区二区三区四区五区午夜 | 免费一级黄色电影 | 成人精品毛片国产亚洲av十九禁 | 亚欧洲精品在线视频免费观看 | 成人做爰9片免费看网站 | 中文字幕 在线观看 | 欧美一区2区三区3区公司 | 精品美女久久久久久免费 | 色天堂影院 | 精品在线一区 | 国产精品久久久久久久久久久免费看 | 成人黄色三级毛片 | 天天干人人 | 亚洲 欧美 在线 一区 | 天堂久久久久久久 | 天天草夜夜骑 |