史上最全SQL优化方案(一)
在進(jìn)行MySQL的優(yōu)化之前,必須要了解的就是MySQL的查詢過程,很多查詢優(yōu)化工作實(shí)際上就是遵循一些原則,讓MySQL的優(yōu)化器能夠按照預(yù)想的合理方式運(yùn)行而已。
1、優(yōu)化的哲學(xué)注:
優(yōu)化有風(fēng)險(xiǎn),涉足需謹(jǐn)慎
a 優(yōu)化可能帶來的問題?
(1)優(yōu)化不總是對一個單純的環(huán)境進(jìn)行,還很可能是一個復(fù)雜的已投產(chǎn)的系統(tǒng);
(2)優(yōu)化手段本來就有很大的風(fēng)險(xiǎn),只不過你沒能力意識到和預(yù)見到
(3)任何的技術(shù)可以解決一個問題,但必然存在帶來一個問題的風(fēng)險(xiǎn);
(4)對于優(yōu)化來說解決問題而帶來的問題,控制在可接受的范圍內(nèi)才是有成果;
(5)保持現(xiàn)狀或出現(xiàn)更差的情況都是失敗!
b 優(yōu)化的需求?
(1)穩(wěn)定性和業(yè)務(wù)可持續(xù)性,通常比性能更重要;
(2)優(yōu)化不可避免涉及到變更,變更就有風(fēng)險(xiǎn);
(3)優(yōu)化使性能變好,維持和變差是等概率事件;
(4)切記優(yōu)化,應(yīng)該是各部門協(xié)同,共同參與的工作,任何單一部門都不能對數(shù)據(jù)庫進(jìn)行優(yōu)化!
(5)所以優(yōu)化工作,是由業(yè)務(wù)需要驅(qū)使的!
c 優(yōu)化由誰參與?
在進(jìn)行數(shù)據(jù)庫優(yōu)化時(shí),應(yīng)由數(shù)據(jù)庫管理員、業(yè)務(wù)部門代表、應(yīng)用程序架構(gòu)師、應(yīng)用程序設(shè)計(jì)人員、應(yīng)用程序開發(fā)人員、硬件及系統(tǒng)管理員、存儲管理員等,業(yè)務(wù)相關(guān)人員共同參與。
2 優(yōu)化思路
a 優(yōu)化什么?在數(shù)據(jù)庫優(yōu)化上有兩個主要方面:即安全與性能。
(1)安全->數(shù)據(jù)可持續(xù)性;
(2)性能->數(shù)據(jù)的高性能訪問。
b優(yōu)化的范圍有哪些?存儲、主機(jī)和操作系統(tǒng)方面:
(1)主機(jī)架構(gòu)穩(wěn)定性;
(2)I/O規(guī)劃及配置;
(3)Swap交換分區(qū);
(4)OS內(nèi)核參數(shù)和網(wǎng)絡(luò)問題。
應(yīng)用程序方面:
(1)應(yīng)用程序穩(wěn)定性;
(2)SQL語句性能;
(3)串行訪問資源;
(4)性能欠佳會話管理;
(5)這個應(yīng)用適不適合用MySQL。
數(shù)據(jù)庫優(yōu)化方面:
(1)內(nèi)存;
(2)數(shù)據(jù)庫結(jié)構(gòu)(物理&邏輯);
(3)實(shí)例配置。說明:不管是設(shè)計(jì)系統(tǒng)、定位問題還是優(yōu)化,都可以按照這個順序執(zhí)行。
c 優(yōu)化維度?
數(shù)據(jù)庫優(yōu)化維度有四個:硬件、系統(tǒng)配置、數(shù)據(jù)庫表結(jié)構(gòu)、SQL及索引。
優(yōu)化選擇:
(1)優(yōu)化成本:硬件>系統(tǒng)配置>數(shù)據(jù)庫表結(jié)構(gòu)>SQL及索引。
(2)優(yōu)化效果:硬件<系統(tǒng)配置<數(shù)據(jù)庫表結(jié)構(gòu)<SQL及索引。
3 優(yōu)化工具有啥?
a 數(shù)據(jù)庫層面?
檢查問題常用工具:
不常用但好用的工具:
b 數(shù)據(jù)庫層面問題解決思路?一般應(yīng)急調(diào)優(yōu)的思路:針對突然的業(yè)務(wù)辦理卡頓,無法進(jìn)行正常的業(yè)務(wù)處理,需要立馬解決的場景。
常規(guī)調(diào)優(yōu)思路:針對業(yè)務(wù)周期性的卡頓,例如在每天10-11點(diǎn)業(yè)務(wù)特別慢,但是還能夠使用,過了這段時(shí)間就好了。
c 系統(tǒng)層面?CPU方面:
內(nèi)存:
IO設(shè)備(磁盤、網(wǎng)絡(luò)):
vmstat命令說明:
iostat命令說明:
d 系統(tǒng)層面問題解決辦法?
未完待續(xù)!!!最后,小編分類整理了許多java進(jìn)階學(xué)習(xí)材料和BAT面試給熱愛IT行業(yè)的你,如果需要資料的請轉(zhuǎn)發(fā)此文章后再私聊小編回復(fù)【java】就能領(lǐng)取2019年java進(jìn)階學(xué)習(xí)資料和BAT面試題以及《Effective Java》(第3版)電子版書籍。也可以加群:712263501領(lǐng)取海量學(xué)習(xí)資料進(jìn)行學(xué)習(xí)。
總結(jié)
以上是生活随笔為你收集整理的史上最全SQL优化方案(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oppo换屏多少钱啊?
- 下一篇: 史上最全SQL优化方案(二)