本篇內(nèi)容介紹了“慢SQL怎么優(yōu)化”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)公司長(zhǎng)期為1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為武陟企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站制作,武陟網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
慢SQL診斷
系統(tǒng)層面:檢查系統(tǒng)服務(wù)器運(yùn)行情況,磁盤(pán) I/O 等;
數(shù)據(jù)庫(kù)層面:
對(duì)于MySQL來(lái)說(shuō),通過(guò)慢日志定位慢SQL;
對(duì)于慢SQL,查看其執(zhí)行計(jì)劃,分析耗時(shí)的原因;
如果缺失索引,根據(jù)業(yè)務(wù)需求,創(chuàng)建合適的索引;如果由于SQL語(yǔ)句的寫(xiě)法有問(wèn)題,需要根據(jù)業(yè)務(wù)邏輯優(yōu)化語(yǔ)句的寫(xiě)法。
實(shí)用的SQL診斷工具:SQLTXPLAIN
是Oracle專家開(kāi)發(fā)的,用于診斷SQL相關(guān)的問(wèn)題的工具,簡(jiǎn)單易用卻功能強(qiáng)大。
對(duì)于慢SQL診斷支持很多Optimzer問(wèn)題:如執(zhí)行計(jì)劃異常、SQL慢、結(jié)果不正(Wrong Result)等。
慢SQL優(yōu)化
由 SQL 編寫(xiě)導(dǎo)致的慢 SQL 的優(yōu)化建議:
字段類型轉(zhuǎn)換導(dǎo)致不用索引,如字符串類型的不用引號(hào),數(shù)字類型的用引號(hào)等,這有可能會(huì)用不到索引導(dǎo)致全表掃描;
mysql 不支持函數(shù)轉(zhuǎn)換,所以字段前面不能加函數(shù),否則這將用不到索引;
不要在字段前面加減運(yùn)算;
字符串比較長(zhǎng)的可以考慮索引一部份減少索引文件大小,提高寫(xiě)入效率;
like % 在前面用不到索引;
根據(jù)聯(lián)合索引的第二個(gè)及以后的字段單獨(dú)查詢用不到索引;
不要使用 select *;
排序請(qǐng)盡量使用升序 ;
or 的查詢盡量用 union 代替 (Innodb);
復(fù)合索引高選擇性的字段排在前面;
order by / group by 字段包括在索引當(dāng)中減少排序,效率會(huì)更高。
刪除表所有記錄請(qǐng)用 truncate,不要用 delete
不讓 mysql 干多余的事情,如:計(jì)算
在 Innodb上用 select count(*),因?yàn)?Innodb 會(huì)存儲(chǔ)統(tǒng)計(jì)信息;
慎用 Oder by rand()。
開(kāi)源 SQL 優(yōu)化平臺(tái)
對(duì)于 SQL 語(yǔ)句的優(yōu)化,現(xiàn)在有一些開(kāi)源的SQL優(yōu)化平臺(tái),這些融入了大量DBA工程師的經(jīng)驗(yàn),我們可以借助這些平臺(tái)對(duì) SQL 進(jìn)行優(yōu)化。
1. SOAR
是一款 SQL 智能優(yōu)化與改寫(xiě)工具,由小米運(yùn)維 DBA 團(tuán)隊(duì)出品,SOAR 主要由語(yǔ)法解析器、集成環(huán)境、優(yōu)化建議、重寫(xiě)邏輯、工具集五大模塊組成,相比業(yè)內(nèi)其他優(yōu)秀產(chǎn)品有自己的優(yōu)勢(shì),不僅能幫助你 rewrite SQL并且能給出一些優(yōu)化的建議。
2. SQLAdvisor
是由美團(tuán)點(diǎn)評(píng)公司技術(shù)工程部DBA團(tuán)隊(duì)(北京)開(kāi)發(fā)維護(hù)的一個(gè)分析SQL給出索引優(yōu)化建議的工具。它基于MySQL的原生態(tài)詞法解析,結(jié)合分析SQL中的其中條件,聚合條件,多表加入關(guān)系給出索引優(yōu)化建議。
“慢SQL怎么優(yōu)化”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!