當(dāng)前位置:澤眾軟件測試網(wǎng)- 技術(shù)文章 -正文

性能測試問題之慢sql分析

發(fā)布時間:2023-07-26

  我們在做性能測試的時候,慢sql也可以說是很常見問題,我的性能測試生涯幾乎經(jīng)常遇到慢sql,那么我們怎么來判斷有沒有慢sql呢,有慢sql后怎么來分析優(yōu)化呢?如圖:
 
 
  通過上圖看可以看到當(dāng)存在慢sql的時候,這里會有計數(shù),在之前我們還要查詢一下有沒有開啟慢sql,
 
  1)通過語句直接查詢:show variables like 'slow_query%';輸出結(jié)果
 
 
  可以看到 慢查詢?nèi)罩臼情_啟的,如果沒有開啟,
 
  執(zhí)行set global slow_query_log='ON'; 開啟慢sql日志即可
 
  2)查詢一下sql語句執(zhí)行超過多久后會當(dāng)慢sql的記錄:
 
  show variables like '%long_query_time%'; 輸出結(jié)果
 
 
  經(jīng)查詢可知sql語句執(zhí)行超過1s就會當(dāng)慢sql進(jìn)行記錄,當(dāng)我們想修改這個時間的時候,執(zhí)行語句:set long_query_time=0.5;
 
  3)我們來隨便執(zhí)行一個sql 看一下監(jiān)控效果
 
  SELECT * from test LIMIT 100000;
 
 
  4)我們看一下執(zhí)行計劃,為什么這個sql這么慢
 
  EXPLAIN SELECT * from test LIMIT 100000;
 
 
  可以看出索引類型是全局索引,我這里是為了演示,實(shí)際測試時候如果出現(xiàn)是不可以的
 
  5)既然這個sql慢,我們接下來分析一下吧
 
  啟用profiling:SET profiling=1;
 
  查看profiling 是否啟用:SELECT @@profiling; 0 代表沒有啟用
 
  執(zhí)行需要分析的sql:SELECT * from test LIMIT 100000;
 
  獲取上面sql執(zhí)行的Query_ID:show profiles;
 
 
  查詢消耗等信息: show PROFILE ALL FOR QUERY "要分析的語句的Query_ID";
 
 
  可以看到sql的執(zhí)行過程耗時等信息
 
  關(guān)閉profiling:SET profiling = 0;
 
  推薦閱讀:
 
 
 
本文內(nèi)容不用于商業(yè)目的,如涉及知識產(chǎn)權(quán)問題,請權(quán)利人聯(lián)系SPASVO小編(021-60725088-8054),我們將立即處理,馬上刪除。
滬ICP備07036474號 2003-2024 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd.
微信
咨詢

添加客服微信 歡迎咨詢測試工具和測試服務(wù)

微信客服
問題
反饋
產(chǎn)品
畫冊

掃描二維碼下載澤眾軟件企業(yè)宣傳冊

產(chǎn)品畫冊
返回
頂部

方案咨詢

×
提交信息

電話咨詢,400-035-7887,安排專業(yè)技術(shù)售前給您解答(產(chǎn)品試用、技術(shù)交流、服務(wù)咨詢和商務(wù)報價)。

您的信息已成功提交!

我們的客服人員稍后會與您聯(lián)系