国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL-如何定位慢查詢SQL以及優(yōu)化

這篇具有很好參考價值的文章主要介紹了MySQL-如何定位慢查詢SQL以及優(yōu)化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

慢查詢?nèi)罩居涗浡齋QL

定位慢SQL可以通過慢查詢?nèi)罩緛聿榭绰齋QL,默認(rèn)的情況下,MySQL數(shù)據(jù)庫不開啟慢查詢?nèi)罩?slow query log),需要手動把它打開
SET GLOBAL slow_query_log = ‘ON’;
MySQL-如何定位慢查詢SQL以及優(yōu)化

查看下慢查詢?nèi)罩九渲?/strong>
SHOW VARIABLES LIKE ‘slow_query_log%’

slow_query_log:表示慢查詢開啟的狀態(tài)
slow_query_log_file:表示慢查詢?nèi)罩敬娣诺奈恢?/p>

查看超過多少時間,才記錄到慢查詢?nèi)罩?/strong>
SHOW VARIABLES LIKE ‘long_query_time’

注意: 這樣配置是臨時的如果需要永久修改需要去配置文件(/etc/my.cnf)

explain查看分析SQL執(zhí)行計劃

通過慢查詢?nèi)罩径ㄎ怀霾樵冃瘦^低的SQL,可以使用explain查看SQL的執(zhí)行計劃
MySQL-如何定位慢查詢SQL以及優(yōu)化

id

1. id 值相同時,被視為一組從上向下執(zhí)行。
2. 如果是子查詢,id 值會遞增,id 值越高,優(yōu)先級越高
3. id為NULL最后執(zhí)行

select_type

1. simple: 簡單的select, 查詢中不包含子查詢或者 union。例如: select name from student where id= 100
2. primary: 子查詢中最外層查詢, 查詢中若包含任何復(fù)雜的子部分, 最外層的select被標(biāo)記為primary
3. derived:在 from 的列表中包含的子查詢被標(biāo)記成 derived(派生表)。例如: explain select id from (select id,name from student) student1 where name= ‘name100’
4. subquery:在 select 或 where 列表中包含了子查詢,則子查詢被標(biāo)記成 subquery。例如: explain select id from student where score = (select score from student where
name=‘name100’);
5. union: union中的第二個或后面的select語句. 例如: EXPLAIN select id from student where id<12691055 UNION all select id from student where id<12691060;

table

顯示這一步所訪問數(shù)據(jù)庫中表名稱. 有時候不是真實的表名, 可能是簡稱

partitions

該字段看table所在的分區(qū), 值為NULL表示表未被分區(qū)

possible_keys

可能會使用到的索引(ps.其實不太重要)

重點關(guān)注的字段
type

表示連接類型,查看索引執(zhí)行情況的一個重要指標(biāo) 以下性能從好到壞依次:system > const > eq_ref > ref >
ref_or_null > index_merge > unique_subquery > index_subquery > range >
index > ALL
system:這種類型要求數(shù)據(jù)庫表中只有一條數(shù)據(jù),是const類型的一個特例,一般情況下是不會出現(xiàn)的
const:通過一次索引就能找到數(shù)據(jù),一般用于主鍵或唯一索引作為條件,這類掃描效率極高,速度非???br> eq_ref:常用于主鍵或唯一索引掃描,一般指使用主鍵的關(guān)聯(lián)查詢 ref : 常用于非主鍵和唯一索引掃描
ref_or_null:這種連接類型類似于ref,區(qū)別在于MySQL會額外搜索包含NULL值的行
index_merge:使用了索引合并優(yōu)化方法,查詢使用了兩個以上的索引
unique_subquery:類似于eq_ref,條件用了in子查詢
index_subquery:區(qū)別于unique_subquery,用于非唯一索引,可以返回重復(fù)值
range:常用于范圍查詢,比如:between … and 或 In 等操作 index:全索引掃描 ALL:全表掃描

key

實際使用到的索引

key_len

實際使用到的索引的長度

rows

該列表示MySQL估算找到我們所需的記錄,需要讀取的行數(shù)

filtered

該列是一個百分比,是滿足條件的記錄數(shù)量與我們查詢了多少記錄數(shù)量的比值

extra

該字段包含有關(guān)MySQL如何解析查詢的其他信息,它一般會出現(xiàn)這幾個值:
● Usingfilesort:表示按文件排序,一般是在指定的排序和索引排序不一致的情況才會出現(xiàn),一般見于order by語句
● Using index:表示是否用了覆蓋索引
● Using temporary: 表示是否使用了臨時表,性能特別差,需要重點優(yōu)化,一般多見于groupby語句,或者union語句
● Using where : 表示使用了where條件過濾
● Using index condition:MySQL5.6之后新增的索引下推,在存儲引擎層進(jìn)行數(shù)據(jù)過濾,而不是在服務(wù)層過濾,利用索引現(xiàn)有的數(shù)據(jù)減少回表的數(shù)據(jù)

profile分析執(zhí)行耗時

explain只是看到SQL預(yù)估的執(zhí)行計劃,如果要了解SQL真正的執(zhí)行線程狀態(tài)及消耗的時間,需要使用profiling,開啟profiling參數(shù)后,后續(xù)執(zhí)行的SQL語句都會記錄其資源開銷,包括IO,上下文切換,CPU,內(nèi)存等等,可以根據(jù)這些開銷進(jìn)一步分析當(dāng)前慢SQL的瓶頸再進(jìn)一步進(jìn)行優(yōu)化

MySQL-如何定位慢查詢SQL以及優(yōu)化

Optimizer Trace分析詳情

profile只能查看到SQL的執(zhí)行耗時,但無法看到SQL真正執(zhí)行的過程信息,不知道MySQL優(yōu)化器是如何選擇執(zhí)行計劃,這時候,可以使用Optimizer
Trace,它可以跟蹤執(zhí)行語句的解析優(yōu)化執(zhí)行的全過程

MySQL-如何定位慢查詢SQL以及優(yōu)化

三個階段分為對應(yīng):準(zhǔn)備階段、分析階段、執(zhí)行階段

確定問題采用響應(yīng)措施

● 多數(shù)慢SQL都跟索引有關(guān),比如不加索引,索引不生效、不合理等,這時候,可以優(yōu)化索引
● 還可以優(yōu)化SQL語句,比如一些in元素過多問題(分批),深分頁問題(基于上一次數(shù)據(jù)過濾等),進(jìn)行時間分段查詢
● SQL沒辦法很好優(yōu)化,可以改用ES的方式,或者數(shù)倉
● 如果單表數(shù)據(jù)量過大導(dǎo)致慢查詢,可以考慮分庫分表
● 如果數(shù)據(jù)庫在刷臟頁導(dǎo)致慢查詢,考慮是否可以優(yōu)化一些參數(shù)
● 如果存量數(shù)據(jù)量太大,考慮是否可以讓部分?jǐn)?shù)據(jù)歸檔文章來源地址http://www.zghlxwxcb.cn/news/detail-472930.html

到了這里,關(guān)于MySQL-如何定位慢查詢SQL以及優(yōu)化的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【MYSQL高級】Mysql找出執(zhí)行慢的SQL【慢查詢?nèi)罩臼褂门c分析】

    【MYSQL高級】Mysql找出執(zhí)行慢的SQL【慢查詢?nèi)罩臼褂门c分析】

    慢查詢的開啟并捕獲:開啟慢查詢?nèi)罩?,設(shè)置閾值,比如超過5秒鐘的就是慢SQL,至少跑1天,看看生產(chǎn)的慢SQL情況,并將它抓取出來 explain + 慢SQL分析 show Profile。(比explain還要詳細(xì),可以查詢SQL在MySQL數(shù)據(jù)庫中的執(zhí)行細(xì)節(jié)和生命周期情況) 運(yùn)維經(jīng)理 OR DBA,進(jìn)行MySQL數(shù)據(jù)庫服務(wù)

    2024年02月13日
    瀏覽(115)
  • Mysql找出執(zhí)行慢的SQL【慢查詢?nèi)罩臼褂门c分析】

    Mysql找出執(zhí)行慢的SQL【慢查詢?nèi)罩臼褂门c分析】

    慢查詢的開啟并捕獲:開啟慢查詢?nèi)罩?,設(shè)置閾值,比如超過5秒鐘的就是慢SQL,至少跑1天,看看生產(chǎn)的慢SQL情況,并將它抓取出來 explain + 慢SQL分析 show Profile。(比explain還要詳細(xì),可以查詢SQL在MySQL數(shù)據(jù)庫中的執(zhí)行細(xì)節(jié)和生命周期情況) 運(yùn)維經(jīng)理 OR DBA,進(jìn)行MySQL數(shù)據(jù)庫服務(wù)

    2024年02月11日
    瀏覽(96)
  • MySQL 聯(lián)表查詢重復(fù)數(shù)據(jù)并刪除(子查詢刪除記錄) SQL優(yōu)化

    數(shù)據(jù)庫表介紹: table_a :主表(小表,表數(shù)據(jù)不可重復(fù)) table_b :流水表(大表,記錄審核流水?dāng)?shù)據(jù)) 注:兩表表結(jié)構(gòu)大致一致,流水表增加一個審核狀態(tài)的字段 業(yè)務(wù)邏輯: 主表保存唯一數(shù)據(jù),流水表記錄審核流水?dāng)?shù)據(jù),用于后續(xù)展示,并在審核成功后插入主表,在插入流

    2023年04月08日
    瀏覽(29)
  • 玩轉(zhuǎn)MySQL數(shù)據(jù)庫之SQL優(yōu)化之慢查詢

    本系列為:MySQL數(shù)據(jù)庫詳解,為千鋒資深教學(xué)老師獨家創(chuàng)作,致力于為大家講解清晰MySQL數(shù)據(jù)庫相關(guān)知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關(guān)注】持續(xù)追更~ 文末有本文重點總結(jié),技術(shù)類問題,也歡迎大家和我們溝通交流! 從今天開始本系列

    2024年02月06日
    瀏覽(98)
  • 如何針對慢查詢的sql進(jìn)行優(yōu)化?

    優(yōu)化慢查詢的 SQL 可以從多個方面入手,以下是一些常用的優(yōu)化方式和示例: 在表中添加合適的索引可以顯著提升查詢效率??梢酝ㄟ^ EXPLAIN 命令來查看查詢計劃,判斷是否使用了索引,如果沒有使用索引,就需要考慮添加索引。 示例: 如果查詢計劃中 type 列為 ALL,說明沒

    2024年02月15日
    瀏覽(25)
  • MySQL 8.0 OCP (1Z0-908) 考點精析-性能優(yōu)化考點4:慢速查詢?nèi)罩荆╯low query log)

    慢速查詢?nèi)罩荆╯low query log) 慢速查詢?nèi)罩荆╯low query log)主要用于查找超過指定時間、執(zhí)行時間很長的SQL。 默認(rèn)情況下這個功能是無效的,所以要啟用慢速查詢?nèi)罩拘枰O(shè)置slow_query_log 為1(ON)。 慢速查詢?nèi)罩荆╯low query log)相關(guān)參數(shù) 下面我們看看慢速查詢?nèi)罩荆╯low query l

    2023年04月22日
    瀏覽(82)
  • mysql查詢當(dāng)天、近一周、近一個月及近一年的數(shù)據(jù)以及各種報表查詢sql

    以下是一些常見的MySQL查詢語句,用于查詢當(dāng)天、近一周、近一個月和近一年的數(shù)據(jù),以及一些常見的報表查詢。 查詢當(dāng)天的數(shù)據(jù): 查詢近一周的數(shù)據(jù): 查詢近一個月的數(shù)據(jù): 查詢近一年的數(shù)據(jù): 報表查詢示例: 這些查詢語句可以根據(jù)您的具體表結(jié)構(gòu)和需求進(jìn)行調(diào)整和修

    2024年02月02日
    瀏覽(18)
  • MySQL 如何優(yōu)化慢查詢?

    MySQL 如何優(yōu)化慢查詢?

    在日常開發(fā)中,我們往往會給表加各種索引,來提高 MySQL 的檢索效率。 但我們有時會遇到明明給字段加了索引,并沒有走索引的Case。 進(jìn)而導(dǎo)致 MySQL 產(chǎn)生慢查詢。 嚴(yán)重場景下,甚至出現(xiàn)主從延遲、數(shù)據(jù)庫拖垮的極端事故。 本文梳理出索引失效的幾種常見場景給大家參考。

    2024年02月05日
    瀏覽(24)
  • Mysql如何優(yōu)化數(shù)據(jù)查詢方案

    Mysql如何優(yōu)化數(shù)據(jù)查詢方案

    mysql做讀寫分離 讀寫分離是提高mysql并發(fā)的首選方案。 Mysql主從復(fù)制的原理 mysql的主從復(fù)制依賴于binlog,也就是記錄mysql上的所有變化并以二進(jìn)制的形式保存在磁盤上,復(fù)制的過程就是將binlog中的數(shù)據(jù)從主庫傳輸?shù)綇膸焐稀?主從復(fù)制過程詳細(xì)分為3個階段: 第一階段:主庫寫

    2024年02月21日
    瀏覽(19)
  • 【JAVA面試】Mysql慢查詢?nèi)绾蝺?yōu)化

    提示:文章先作為初版,等后續(xù)時間充足后,補(bǔ)充更深的內(nèi)容 MySQL的慢查詢是 指執(zhí)行時間較長的SQL語句 ,可以根據(jù)執(zhí)行時間超過預(yù)設(shè)閾值(如1秒)或返回的記錄數(shù)超過預(yù)設(shè)閾值(如1000條)來進(jìn)行定義。一般情況下**,慢查詢是由于查詢語句中使用了不恰當(dāng)?shù)乃饕?、?shù)據(jù)庫結(jié)

    2024年02月03日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包