SQL 基本信息
SQL 診斷功能旨在分析和診斷 TopSQL、SlowSQL 和可疑 SQL,幫助您優(yōu)化數(shù)據(jù)庫性能。
基本概念
SQL 診斷的基本概念如下:
TopSQL:是指在指定時(shí)間范圍內(nèi)整體響應(yīng)時(shí)間最長的 SQL 語句。
SlowSQL:是指執(zhí)行時(shí)間超過 500ms 的 SQL 語句。
可疑 SQL:是指根據(jù)規(guī)則、算法篩選出的可能導(dǎo)致性能問題的 SQL 語句。
目前,系統(tǒng)對標(biāo)準(zhǔn)版(Key-Value)集群實(shí)例有如下限制:
對于版本號大于等于 4.2.4 但小于 4.3.0 的 KV 集群實(shí)例,支持顯示 TopSQL 和 SlowSQL 的診斷信息。
對于其他版本的 KV 集群實(shí)例,僅支持顯示 SlowSQL 的診斷信息。
TopSQL
TopSQL 是指在指定時(shí)間范圍內(nèi)整體響應(yīng)時(shí)間最長的 SQL 語句。
單擊快捷篩選項(xiàng),例如 全表掃描、多分區(qū)掃描 等,快速識別出需要優(yōu)化的 SQL。
單擊 操作 列的 查看樣本,可以查看該 SQL 語句。
單擊 SQL 文本前的 +,查看 最后一次報(bào)錯(cuò) 和 統(tǒng)計(jì)時(shí)段內(nèi)報(bào)錯(cuò)匯總。
單擊列表右上方的 查看優(yōu)化建議,可跳轉(zhuǎn)至優(yōu)化中心查看優(yōu)化建議。
單擊列表右上方的 TopSQL 對比,可以對比相同 SQL 在同一個(gè)節(jié)點(diǎn)的不同時(shí)段或在不同節(jié)點(diǎn)上的運(yùn)行情況。
不同時(shí)段對比:將同一節(jié)點(diǎn)上相同 SQL 在基準(zhǔn)和對比時(shí)段的運(yùn)行情況進(jìn)行對比,然后查看 明細(xì)數(shù)據(jù)對比 和 性能趨勢對比 信息。
不同節(jié)點(diǎn)對比:將相同 SQL 在基準(zhǔn)節(jié)點(diǎn)與其他節(jié)點(diǎn)的運(yùn)行情況進(jìn)行對比,然后查看 明細(xì)數(shù)據(jù)對比 和 響應(yīng)時(shí)間趨勢對比 信息。
說明相同 SQL 是指相同的數(shù)據(jù)庫和 SQL ID。
當(dāng)不同節(jié)點(diǎn)對比時(shí),只有不同節(jié)點(diǎn)上執(zhí)行相同 SQL 才會輸出結(jié)果。
當(dāng)發(fā)現(xiàn)某個(gè)節(jié)點(diǎn) CPU 負(fù)載過高時(shí),可以先篩選 數(shù)據(jù)庫 和 節(jié)點(diǎn),然后根據(jù) CPU 時(shí)間 對 SQL 進(jìn)行降序排序,從而識別出最需要優(yōu)化的 SQL。
SlowSQL
SlowSQL 是指執(zhí)行時(shí)間超過 500ms 的 SQL 語句。
單擊快捷篩選項(xiàng),例如 全表掃描、多分區(qū)掃描 等,快速識別出需要優(yōu)化的 SQL。
單擊 操作 列的 查看樣本,可以查看該 SQL 語句。
可疑 SQL
可疑 SQL 是指根據(jù)規(guī)則、算法篩選出的可能導(dǎo)致性能問題的 SQL 語句。以下是常見的診斷結(jié)果及處理建議:
診斷結(jié)果 | 處理建議 |
Hint 未生效 | 異常 SQL,需要 DBA 確認(rèn)是否使用 OUTLINE 進(jìn)行執(zhí)行計(jì)劃固化。 |
全表掃描性能較差 | 請分析執(zhí)行計(jì)劃和表結(jié)構(gòu),確認(rèn) SQL 有合適的索引可用。 |
走索引但性能比較低 | 請確認(rèn)業(yè)務(wù)場景是否可以接受此性能,若不可接受請改進(jìn)業(yè)務(wù)邏輯或優(yōu)化索引。 |
性能比以前下降 | 請確認(rèn)數(shù)據(jù)分布變化、請求量突漲、執(zhí)行計(jì)劃變化等情況。 |
執(zhí)行計(jì)劃變動(dòng)且性能下降 | 需 DBA 確認(rèn),可使用 OUTLINE 進(jìn)行執(zhí)行計(jì)劃固化,以判斷是否為異常 SQL。 |
執(zhí)行次數(shù)突刺 | 需確認(rèn)業(yè)務(wù)量,可能導(dǎo)致整體性能下降。 |
CPU 負(fù)載過高 | 請確認(rèn)業(yè)務(wù)場景、數(shù)據(jù)分布變化、請求量突漲、執(zhí)行計(jì)劃變化等情況。 |
疑似鎖沖突 | SQL 存在重試,可能是鎖沖突導(dǎo)致,請排查業(yè)務(wù)邏輯,是否存在鎖沖突場景。 |
DML 訪問過多分區(qū)數(shù) | 請改寫 SQL,保證 SQL 能進(jìn)行分區(qū)裁剪。 |
疑似 Buffer 表 | 請確認(rèn)相關(guān)表是否在頻繁更新。 |
疑似存在大小賬號 | 請排查是否存在數(shù)據(jù)傾斜問題。 |
執(zhí)行計(jì)劃不穩(wěn)定 | 請排查是否存在計(jì)劃惡化的問題。 |
計(jì)劃生成時(shí)間過長 | 請排查是否存在計(jì)劃命中率低等問題。 |
可疑 SQL 頁簽展示了 SQL 文本、SQL ID、數(shù)據(jù)庫、診斷結(jié)果 等信息。