MySQL——優(yōu)化思路


Q:為什么人家問你MySQL優(yōu)化知識七婴,你總是沒有底氣?
A:因為你只能回答一些大而化之的調(diào)優(yōu)原則察滑。

比如建立聯(lián)合索引(什么樣的聯(lián)合索引打厘?)
分庫分表(用什么樣的策略分庫分表?)
并沒有細(xì)化到定量的層面上去分析贺辰。
如:qps提高了 %N户盯? 有沒有減少文件排序? 查詢語句掃描的行數(shù)是否減少饲化?

MySQL優(yōu)化需要建立在大量的數(shù)據(jù)基礎(chǔ)上莽鸭,我們平時做測試也就手工的往表里添加一些數(shù)據(jù),數(shù)據(jù)量小吃靠,看不出語句之間的明顯區(qū)別蒋川。

Q:如何提高MySQL性能?
A: 需要優(yōu)化撩笆,說明效果不理想捺球。因此我們首先要做的不是優(yōu)化,而是--診斷夕冲。治病的前提是診病氮兵,找出瓶頸所在,CPU歹鱼,內(nèi)存泣栈,IO,峰值,單條語句南片?

  • linux下cpu使用率掺涛,內(nèi)存使用率 :使用top命令即可查看。
[root@localhost ~] # top
Paste_Image.png
  • iotop可以來查看磁盤讀寫占用情況
[root@localhost ~] # iotop
Paste_Image.png
  • MySQL峰值監(jiān)測

這里我們需要找一個小工具幫忙了 疼进,它就是AWK薪缆。
它是一個簡便的直式譯式的文本工具。
擅長處理多行多列數(shù)據(jù)
命令規(guī)則:pattern(條件)+action(動作)
如:awk 'printf{"%s\n",$1}' xx.txt 將打印每一行的第一列

我們將使用 awk 對 對MySQL 的status做一些處理伞广,然后保存到一個文件中拣帽,作為我們的分析依據(jù)。
先看看 MySQL的 status

[root@localhost ~]# mysqladmin -uroot -proot ext
Paste_Image.png

參數(shù)太多啦嚼锄,列不完减拭,我們主要關(guān)注以下幾個參數(shù):
Queries(查詢次數(shù)),Threads_connected(線程連接數(shù))区丑,Threads_running(活躍線程數(shù))

mysqladmin -uroot -proot ext | awk     
'/Queries/{q=$4}/Threads_connected/{c=$4}/Threads_running/{r=$4}END{printf(%d %d %d\n,q,c,r)}'

根據(jù)這個命令寫成一個腳本拧粪,每秒鐘執(zhí)行一次。
監(jiān)測一段時間沧侥,根據(jù)生成的數(shù)據(jù)生成報表:


每秒請求數(shù)周期性變化

如果波動很大既们,說明可能是緩存失效引起的,此時我們可通過修改緩存策略即可減輕MySQL的壓力正什。

  • 語句分析

如果以上情況都正常啥纸,那可能就是我們寫的語句執(zhí)行效率的問題。
可以用show processlist命令長期觀察,或用慢查詢
這個命令是顯示當(dāng)前所有連接的工作狀態(tài)

#!/bin/bash
while true
do
mysql -uroot -e 'show processlist\G'|grep State:|uniq -c|sort -rn
echo '---'
sleep 1
Done

如果觀察到以下狀態(tài),則需要注意

  • converting HEAP to MyIsam (查詢結(jié)果太大婴氮,把結(jié)果放到磁盤)
    語句寫的不好斯棒,取數(shù)據(jù)太多
  • create tmp table (創(chuàng)建臨時表)
    如 group時,存儲中間結(jié)果主经,說明索引建的不好
  • copy to tmp table on disk(把內(nèi)存臨時表復(fù)制到磁盤)
    說明索引建的不好荣暮,表字段選擇不好。
  • locked (被其他查詢鎖渍肿ぁ)
    一般在使用事務(wù)的地方較容易發(fā)生穗酥。
  • logging slow query 記錄慢查詢

explain 與 profilling

這兩個命令是我們分析 sql 最厲的武器,我會在接下來的文章介紹重點介紹惠遏。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砾跃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子节吮,更是在濱河造成了極大的恐慌抽高,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件透绩,死亡現(xiàn)場離奇詭異翘骂,居然都是意外死亡壁熄,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門碳竟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來草丧,“玉大人,你說我怎么就攤上這事莹桅〔矗” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵统翩,是天一觀的道長。 經(jīng)常有香客問我此洲,道長厂汗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任呜师,我火速辦了婚禮娶桦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汁汗。我一直安慰自己衷畦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布知牌。 她就那樣靜靜地躺著祈争,像睡著了一般。 火紅的嫁衣襯著肌膚如雪角寸。 梳的紋絲不亂的頭發(fā)上菩混,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音扁藕,去河邊找鬼沮峡。 笑死,一個胖子當(dāng)著我的面吹牛亿柑,可吹牛的內(nèi)容都是我干的邢疙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼望薄,長吁一口氣:“原來是場噩夢啊……” “哼疟游!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痕支,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乡摹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后采转,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體聪廉,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡瞬痘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了板熊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片框全。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖干签,靈堂內(nèi)的尸體忽然破棺而出津辩,到底是詐尸還是另有隱情,我是刑警寧澤容劳,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布喘沿,位于F島的核電站,受9級特大地震影響竭贩,放射性物質(zhì)發(fā)生泄漏蚜印。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一留量、第九天 我趴在偏房一處隱蔽的房頂上張望窄赋。 院中可真熱鬧,春花似錦楼熄、人聲如沸忆绰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽错敢。三九已至,卻和暖如春缕粹,著一層夾襖步出監(jiān)牢的瞬間伐债,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工致开, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留峰锁,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓双戳,卻偏偏與公主長得像虹蒋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子飒货,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

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