史上最全的MySQL高性能優(yōu)化實(shí)戰(zhàn)總結(jié)膘魄!

1.1 前言

MySQL對(duì)于很多Linux從業(yè)者而言乌逐,是一個(gè)非常棘手的問題,多數(shù)情況都是因?yàn)閷?duì)數(shù)據(jù)庫出現(xiàn)問題的情況和處理思路不清晰创葡。在進(jìn)行MySQL的優(yōu)化之前必須要了解的就是MySQL的查詢過程浙踢,很多的查詢優(yōu)化工作實(shí)際上就是遵循一些原則讓MySQL的優(yōu)化器能夠按照預(yù)想的合理方式運(yùn)行而已。

今天給大家體驗(yàn)MySQL的優(yōu)化實(shí)戰(zhàn)灿渴,助你高薪之路順暢洛波。

圖 - MySQL查詢過程

1.2 優(yōu)化的哲學(xué)

優(yōu)化有風(fēng)險(xiǎn),涉足需謹(jǐn)慎

1.2.1 優(yōu)化可能帶來的問題

1.2.2 優(yōu)化的需求

1.2.3 優(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)管理員够话、存儲(chǔ)管理員等,業(yè)務(wù)相關(guān)人員共同參與光绕。

1.3 優(yōu)化思路

1.3.1 優(yōu)化什么

在數(shù)據(jù)庫優(yōu)化上有兩個(gè)主要方面:即安全與性能女嘲。

1.3.2 優(yōu)化的范圍有哪些

存儲(chǔ)、主機(jī)和操作系統(tǒng)方面:

應(yīng)用程序方面:

數(shù)據(jù)庫優(yōu)化方面:

說明:不管是在诞帐,設(shè)計(jì)系統(tǒng)欣尼,定位問題還是優(yōu)化,都可以按照這個(gè)順序執(zhí)行停蕉。

1.3.3 優(yōu)化維度

數(shù)據(jù)庫優(yōu)化維度有四個(gè):

硬件愕鼓、系統(tǒng)配置、數(shù)據(jù)庫表結(jié)構(gòu)慧起、SQL及索引

優(yōu)化選擇

1.4 優(yōu)化工具有啥菇晃?

1.4.1 數(shù)據(jù)庫層面

檢查問題常用工具

不常用但好用的工具

1.4.2 數(shù)據(jù)庫層面問題解決思路

一般應(yīng)急調(diào)優(yōu)的思路:

針對(duì)突然的業(yè)務(wù)辦理卡頓,無法進(jìn)行正常的業(yè)務(wù)處理蚓挤!需要立馬解決的場(chǎng)景磺送!

常規(guī)調(diào)優(yōu)思路:

針對(duì)業(yè)務(wù)周期性的卡頓驻子,例如在每天10-11點(diǎn)業(yè)務(wù)特別慢,但是還能夠使用估灿,過了這段時(shí)間就好了崇呵。

1.4.3 系統(tǒng)層面

cpu方面

vmstat、sar?top馅袁、htop域慷、nmon、mpstat

內(nèi)存

free汗销、ps?-aux?犹褒、

IO設(shè)備(磁盤、網(wǎng)絡(luò))

iostat大溜、?ss?化漆、?netstat?、?iptraf钦奋、iftop座云、lsof、

vmstat 命令說明:

iostat命令說明

實(shí)例命令: iostat -dk 1 5

iostat -d -k -x 5 (查看設(shè)備使用率(%util)和響應(yīng)時(shí)間(await))

1.4.4 系統(tǒng)層面問題解決辦法

你認(rèn)為到底負(fù)載高好付材,還是低好呢朦拖?

在實(shí)際的生產(chǎn)中,一般認(rèn)為 cpu只要不超過90%都沒什么問題 厌衔。

當(dāng)然不排除下面這些特殊情況:

問題一:cpu負(fù)載高璧帝,IO負(fù)載低

問題二:IO負(fù)載高,cpu負(fù)載低

問題三:IO和cpu負(fù)載都很高

硬件不夠了或sql存在問題

1.5 基礎(chǔ)優(yōu)化

1.5.1 優(yōu)化思路

定位問題點(diǎn):

硬件 --> 系統(tǒng) --> 應(yīng)用 --> 數(shù)據(jù)庫 --> 架構(gòu)(高可用富寿、讀寫分離睬隶、分庫分表)

處理方向

明確優(yōu)化目標(biāo)、性能和安全的折中页徐、防患未然

1.5.2 硬件優(yōu)化

主機(jī)方面:

cpu的選擇:

內(nèi)存的選擇:

存儲(chǔ)方面:

raid卡:主機(jī)raid卡選擇:

網(wǎng)絡(luò)設(shè)備方面:

使用流量支持更高的網(wǎng)絡(luò)設(shè)備(交換機(jī)苏潜、路由器、網(wǎng)線变勇、網(wǎng)卡恤左、HBA卡)

注意:以上這些規(guī)劃應(yīng)該在初始設(shè)計(jì)系統(tǒng)時(shí)就應(yīng)該考慮好。

1.5.3 服務(wù)器硬件優(yōu)化

1.5.4 系統(tǒng)優(yōu)化

Cpu:

基本不需要調(diào)整搀绣,在硬件選擇方面下功夫即可飞袋。

內(nèi)存:

基本不需要調(diào)整,在硬件選擇方面下功夫即可链患。

SWAP:

MySQL盡量避免使用swap巧鸭。阿里云的服務(wù)器中默認(rèn)swap為0

IO :

這個(gè)參數(shù)決定了Linux是傾向于使用swap,還是傾向于釋放文件系統(tǒng)cache麻捻。在內(nèi)存緊張的情況下蹄皱,數(shù)值越低越傾向于釋放文件系統(tǒng)cache览闰。當(dāng)然,這個(gè)參數(shù)只能減少使用swap的概率巷折,并不能避免Linux使用swap压鉴。

修改MySQL的配置參數(shù)innodb_flush_method,開啟O_DIRECT模式锻拘。這種情況下油吭,InnoDB的buffer pool會(huì)直接繞過文件系統(tǒng)cache來訪問磁盤,但是redo log依舊會(huì)使用文件系統(tǒng)cache署拟。值得注意的是婉宰,Redo log是覆寫模式的,即使使用了文件系統(tǒng)的cache推穷,也不會(huì)占用太多

IO調(diào)度策略

1.5.5 系統(tǒng)參數(shù)調(diào)整

Linux系統(tǒng)內(nèi)核參數(shù)優(yōu)化

用戶限制參數(shù)(mysql可以不設(shè)置以下配置)

1.5.6 應(yīng)用優(yōu)化

業(yè)務(wù)應(yīng)用和數(shù)據(jù)庫應(yīng)用獨(dú)立,防火墻:iptables心包、selinux等其他無用服務(wù)(關(guān)閉):

安裝圖形界面的服務(wù)器不要啟動(dòng)圖形界面 runlevel 3,另外,思考將來我們的業(yè)務(wù)是否真的需要MySQL馒铃,還是使用其他種類的數(shù)據(jù)庫蟹腾。用數(shù)據(jù)庫的最高境界就是不用數(shù)據(jù)庫。

1.6 數(shù)據(jù)庫優(yōu)化

SQL優(yōu)化方向:

執(zhí)行計(jì)劃区宇、索引娃殖、SQL改寫

架構(gòu)優(yōu)化方向:

高可用架構(gòu)、高性能架構(gòu)议谷、分庫分表

1.6.1 數(shù)據(jù)庫參數(shù)優(yōu)化

調(diào)整:

實(shí)例整體(高級(jí)優(yōu)化炉爆,擴(kuò)展)

連接層(基礎(chǔ)優(yōu)化)

設(shè)置合理的連接客戶和連接方式

SQL層(基礎(chǔ)優(yōu)化)

query_cache_size: 查詢緩存

OLAP類型數(shù)據(jù)庫,需要重點(diǎn)加大此內(nèi)存緩存.

但是一般不會(huì)超過GB.

對(duì)于經(jīng)常被修改的數(shù)據(jù),緩存會(huì)立馬失效卧晓。

我們可以實(shí)用內(nèi)存數(shù)據(jù)庫(redis芬首、memecache),替代他的功能逼裆。

1.6.2 存儲(chǔ)引擎層(innodb基礎(chǔ)優(yōu)化參數(shù))

為什么某些人會(huì)一直比你優(yōu)秀郁稍,是因?yàn)樗旧砭秃軆?yōu)秀還一直在持續(xù)努力變得更優(yōu)秀,而你是不是還在滿足于現(xiàn)狀內(nèi)心在竊喜!

歡迎工作一到五年的Java工程師朋友們加入Java架構(gòu)開發(fā):760940986

群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用波附、高并發(fā)、高性能及分布式昼钻、Jvm性能調(diào)優(yōu)掸屡、Spring源碼,MyBatis然评,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來學(xué)習(xí)提升自己仅财,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰!趁年輕碗淌,使勁拼盏求,給未來的自己一個(gè)交代抖锥!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市碎罚,隨后出現(xiàn)的幾起案子磅废,更是在濱河造成了極大的恐慌,老刑警劉巖荆烈,帶你破解...
    沈念sama閱讀 222,729評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拯勉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡憔购,警方通過查閱死者的電腦和手機(jī)宫峦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玫鸟,“玉大人导绷,你說我怎么就攤上這事∈浩” “怎么了妥曲?”我有些...
    開封第一講書人閱讀 169,461評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長枚碗。 經(jīng)常有香客問我逾一,道長,這世上最難降的妖魔是什么肮雨? 我笑而不...
    開封第一講書人閱讀 60,135評(píng)論 1 300
  • 正文 為了忘掉前任遵堵,我火速辦了婚禮,結(jié)果婚禮上怨规,老公的妹妹穿的比我還像新娘陌宿。我一直安慰自己,他們只是感情好波丰,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評(píng)論 6 398
  • 文/花漫 我一把揭開白布壳坪。 她就那樣靜靜地躺著,像睡著了一般掰烟。 火紅的嫁衣襯著肌膚如雪爽蝴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,736評(píng)論 1 312
  • 那天纫骑,我揣著相機(jī)與錄音蝎亚,去河邊找鬼。 笑死先馆,一個(gè)胖子當(dāng)著我的面吹牛发框,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播煤墙,決...
    沈念sama閱讀 41,179評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼梅惯,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼宪拥!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起铣减,我...
    開封第一講書人閱讀 40,124評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤她君,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后徙歼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犁河,經(jīng)...
    沈念sama閱讀 46,657評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評(píng)論 3 342
  • 正文 我和宋清朗相戀三年魄梯,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了桨螺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,872評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡酿秸,死狀恐怖灭翔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辣苏,我是刑警寧澤争群,帶...
    沈念sama閱讀 36,533評(píng)論 5 351
  • 正文 年R本政府宣布印机,位于F島的核電站饲梭,受9級(jí)特大地震影響苛白,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜退客,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評(píng)論 3 336
  • 文/蒙蒙 一骏融、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧萌狂,春花似錦档玻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至务傲,卻和暖如春凉当,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背售葡。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評(píng)論 1 274
  • 我被黑心中介騙來泰國打工看杭, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人天通。 一個(gè)月前我還...
    沈念sama閱讀 49,304評(píng)論 3 379
  • 正文 我出身青樓泊窘,卻偏偏與公主長得像熄驼,于是被迫代替她去往敵國和親像寒。 傳聞我的和親對(duì)象是個(gè)殘疾皇子烘豹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容