數(shù)據(jù)庫(kù)調(diào)優(yōu)(1)

1.場(chǎng)景一

騰訊調(diào)用我方接口進(jìn)行url封禁和查詢,并發(fā)要求50qps,測(cè)試同學(xué)使用jmeter壓測(cè)時(shí)發(fā)現(xiàn),查詢封禁信息接口,構(gòu)造20個(gè)并發(fā)后,發(fā)現(xiàn)查詢響應(yīng)變慢(>2000ms),導(dǎo)致再高的并發(fā)壓不上去不滿足客戶需求。

2. 問(wèn)題分析

通過(guò)查詢?nèi)罩?,定位到該條sql語(yǔ)句耗時(shí)較長(zhǎng),通過(guò)explain分析該sql語(yǔ)句的執(zhí)行計(jì)劃:
explain select * from forbidden_info where guid ='5af50517-f11a-4370-9ca6-03aa61d39b37'

未優(yōu)化前執(zhí)行計(jì)劃.png

下面來(lái)分析執(zhí)行計(jì)劃:

執(zhí)行項(xiàng) 具體值 描述
select_type SIMPLE 是一個(gè)簡(jiǎn)單查詢沒(méi)有關(guān)聯(lián)或者子查詢
table forbidden_info 表名
type ALL 全表掃描
extra using where 未找到索引使用where條件過(guò)濾

通過(guò)以上執(zhí)行計(jì)劃分析發(fā)現(xiàn)該查詢沒(méi)有使用到索引,導(dǎo)致查詢效率低。給guid添加索引后:alter table forbidden_info add index index_guid(guid); 查看執(zhí)行計(jì)劃

添加索引后的執(zhí)行計(jì)劃.png
具體分析:

執(zhí)行項(xiàng) 具體值 描述
select_type SIMPLE 是一個(gè)簡(jiǎn)單查詢沒(méi)有關(guān)聯(lián)或者子查詢
table forbidden_info 表名
type ref 命中了非主鍵索引
possible_keys index_guid 可能使用到的索引
key index_guid 實(shí)際使用到的索引
key_length 603 表示索引使用的字節(jié)數(shù)
ref const 表示索引使用的字節(jié)數(shù)
rows 10 數(shù)據(jù)庫(kù)認(rèn)為需要檢查的行數(shù),估算值,非結(jié)果行數(shù)
extra using index condition 使用了ICP索引下推技術(shù)

添加索引后,查詢耗時(shí)基本在毫秒級(jí),整個(gè)接口的響應(yīng)從2000ms下降到200ms左右

本次數(shù)據(jù)庫(kù)調(diào)優(yōu)涉及到數(shù)據(jù)庫(kù)的索引,可以進(jìn)一步思考,什么時(shí)候使用索引、索引失效的場(chǎng)景、慢sql如何發(fā)現(xiàn)、如何判斷sql有沒(méi)有使用到索引、索引下推技術(shù)等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容