(全網(wǎng)講的最好)面試被問到mysql調(diào)優(yōu)如何回答

面試大綱
深度:JVM、MySal 調(diào)優(yōu)、并發(fā)編程、Spring 源碼、
Redis、MQ 技術(shù)核心競爭力
廣度:微服務(wù)
基礎(chǔ):設(shè)計模式、網(wǎng)絡(luò)、數(shù)據(jù)結(jié)構(gòu)與算法
Mysql優(yōu)化:
sql優(yōu)化一般分為四個層面:
1.業(yè)務(wù)層面的優(yōu)化 2.代碼層面的優(yōu)化 3.sql層面的優(yōu)化 4.硬件層面的優(yōu)化(硬件是運維負(fù)責(zé))
業(yè)務(wù)層面的優(yōu)化
表里十多億的數(shù)據(jù),分庫分表、集群,索引已經(jīng)優(yōu)化到最好了
需求:用戶vip 1級可以看xx的數(shù)據(jù),5級可以看ss的數(shù)據(jù),查數(shù)據(jù),這條sql首先已經(jīng)用到分頁,分頁下面用到count,在此基礎(chǔ)上如何優(yōu)化
背景:可以直接用es,但是es有很多程序員不會(現(xiàn)在的情況是,業(yè)務(wù)已經(jīng)外包開發(fā)完了,做接口壓測時,發(fā)現(xiàn)有一條sql查詢幾十秒)
在這種情況下如何優(yōu)化?
查詢時默認(rèn)設(shè)置查詢條件,比如可以和產(chǎn)品經(jīng)理他們溝通,5級的用戶默認(rèn)就帶有某些條件
代碼層面的優(yōu)化
把count的數(shù)量單獨放在一張表上維護,如果這樣表的數(shù)據(jù)達到10幾億了,count函數(shù)也是相當(dāng)慢,所有可以建立一張表維護總數(shù)量,這張表主要存儲數(shù)據(jù)庫名稱,主鍵,count數(shù),每次添加1條數(shù)據(jù)就異步的把這張表的count數(shù)+1
sql層面的優(yōu)化
可以創(chuàng)建聯(lián)合索引,減少回表,讓所有數(shù)據(jù)直接在這一個索引樹下查詢出來