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