為什么mysql會“抖”一下

概念:

臟頁:

當(dāng)內(nèi)存數(shù)據(jù)頁跟磁盤數(shù)據(jù)頁不一致時,稱為內(nèi)存頁的“臟頁”。

干凈頁:

內(nèi)存數(shù)據(jù)寫入磁盤后巴粪,內(nèi)存和磁盤上的數(shù)據(jù)頁內(nèi)容就一致了,稱為“干凈頁”。

在寫內(nèi)存和日志肛根,而MySQL偶爾抖一下的瞬間辫塌,可能就是在刷臟頁(flush)。

什么情況會引發(fā)數(shù)據(jù)庫的 flush 過程呢派哲?

1.?臼氨,對應(yīng)的就是 InnoDB 的 redo log 寫滿了。這時候系統(tǒng)會停止所有更新操作芭届,把 checkpoint 往前推進(jìn)储矩,redo log 留出空間可以繼續(xù)寫。留出來的空間對應(yīng)的臟頁都flush到磁盤中褂乍。

2. 對應(yīng)的就是系統(tǒng)內(nèi)存不足持隧。當(dāng)需要新的內(nèi)存頁,而內(nèi)存不夠用的時候逃片,就要淘汰一些數(shù)據(jù)頁屡拨,空出內(nèi)存給別的數(shù)據(jù)頁使用。如果淘汰的是“臟頁”褥实,就要先將臟頁寫到磁盤呀狼。

3.?對應(yīng)的就是 MySQL 認(rèn)為系統(tǒng)“空閑”的時候。

4.?對應(yīng)的就是 MySQL 正常關(guān)閉的情況损离。這時候哥艇,MySQL 會把內(nèi)存的臟頁都flush 到磁盤上,這樣下次 MySQL 啟動的時候草冈,就可以直接從磁盤上讀數(shù)據(jù)她奥,啟動速度會很快。

上面四種場景對性能的影響怎棱?

1.?第三種情況是屬于 MySQL 空閑時的操作哩俭,這時系統(tǒng)沒什么壓力,而第四種場景是數(shù)據(jù)庫本來就要關(guān)閉了拳恋。這兩種情況下凡资,你不會太關(guān)注“性能”問題。

2.?是“redo log 寫滿了谬运,要 flush 臟頁”隙赁,這種情況是 InnoDB 要盡量避免的。因為出現(xiàn)這種情況的時候梆暖,整個系統(tǒng)就不能再接受更新了伞访,所有的更新都必須堵住。如果你從監(jiān)控上看轰驳,這時候更新數(shù)會跌為 0厚掷。

3.?“內(nèi)存不夠用了弟灼,要先將臟頁寫到磁盤”,這種情況其實是常態(tài)冒黑。InnoDB 用緩沖池(buffer pool)管理內(nèi)存田绑,緩沖池中的內(nèi)存頁有三種狀態(tài):

第一種是,還沒有使用的抡爹;

第二種是掩驱,使用了并且是干凈頁;

第三種是冬竟,使用了并且是臟頁欧穴。

而當(dāng)要讀入的數(shù)據(jù)頁沒有在內(nèi)存的時候,就必須到緩沖池中申請一個數(shù)據(jù)頁诱咏。這時候只能把最久不使用的數(shù)據(jù)頁從內(nèi)存中淘汰掉:如果要淘汰的是一個干凈頁苔可,就直接釋放出來復(fù)用缴挖;但如果是臟頁呢袋狞,就必須將臟頁先刷到磁盤,變成干凈頁后才能復(fù)用映屋。

刷臟頁雖然是常態(tài)苟鸯,但是出現(xiàn)以下這兩種情況,都是會明顯影響性能的:

1. 一個查詢要淘汰的臟頁個數(shù)太多棚点,會導(dǎo)致查詢的響應(yīng)時間明顯變長早处;

2. 日志寫滿,更新全部堵住瘫析,寫性能跌為 0砌梆,這種情況對敏感業(yè)務(wù)來說,是不能接受的贬循。

InnoDB 刷臟頁的控制策略

你要正確地告訴 InnoDB 所在主機(jī)的 IO 能力咸包,這樣 InnoDB 才能知道需要全力刷臟頁的時候,可以刷多快杖虾。

就要用到 innodb_io_capacity 這個參數(shù)了烂瘫,它會告訴 InnoDB 你的磁盤能力。這個值建議你設(shè)置成磁盤的 IOPS奇适。磁盤的 IOPS 可以通過 fio 這個工具來測試坟比。

InnoDB 的刷盤速度就是要參考這兩個因素:

1.?臟頁比例

2.? redo log 寫盤速度。

參數(shù) innodb_max_dirty_pages_pct 是臟頁比例上限嚷往,默認(rèn)值是 75%葛账。

要盡量避免這種情況,你就要合理地設(shè)置 innodb_io_capacity 的值皮仁,并且平時要多關(guān)注臟頁比例籍琳,不要讓它經(jīng)常接近 75%茄茁。

臟頁比例是通過

Innodb_buffer_pool_pages_dirty/Innodb_buffer_pool_pages_total 得到的。

MySQL 中的一個機(jī)制巩割,對于每個鄰居數(shù)據(jù)頁裙顽,如果跟它相鄰的數(shù)據(jù)頁也還是臟頁的話,也會被放到一起刷宣谈。

在 InnoDB 中愈犹,innodb_flush_neighbors 參數(shù)就是用來控制這個行為的,值為 1 的時候會有上述的“連坐”機(jī)制闻丑,值為 0 時表示不找鄰居漩怎,自己刷自己的。

如果使用的是 SSD 這類 IOPS 比較高的設(shè)備的話嗦嗡,就建議你把innodb_flush_neighbors 的值設(shè)置成 0勋锤。因為這時候 IOPS 往往不是瓶頸,而“只刷自己”侥祭,就能更快地執(zhí)行完必要的刷臟頁操作叁执,減少 SQL 語句響應(yīng)時間。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末矮冬,一起剝皮案震驚了整個濱河市谈宛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌胎署,老刑警劉巖吆录,帶你破解...
    沈念sama閱讀 210,835評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異琼牧,居然都是意外死亡恢筝,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,900評論 2 383
  • 文/潘曉璐 我一進(jìn)店門巨坊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來撬槽,“玉大人,你說我怎么就攤上這事抱究』致龋” “怎么了?”我有些...
    開封第一講書人閱讀 156,481評論 0 345
  • 文/不壞的土叔 我叫張陵鼓寺,是天一觀的道長勋拟。 經(jīng)常有香客問我,道長妈候,這世上最難降的妖魔是什么敢靡? 我笑而不...
    開封第一講書人閱讀 56,303評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮苦银,結(jié)果婚禮上啸胧,老公的妹妹穿的比我還像新娘赶站。我一直安慰自己,他們只是感情好纺念,可當(dāng)我...
    茶點故事閱讀 65,375評論 5 384
  • 文/花漫 我一把揭開白布贝椿。 她就那樣靜靜地躺著,像睡著了一般陷谱。 火紅的嫁衣襯著肌膚如雪烙博。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,729評論 1 289
  • 那天烟逊,我揣著相機(jī)與錄音渣窜,去河邊找鬼。 笑死宪躯,一個胖子當(dāng)著我的面吹牛乔宿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播访雪,決...
    沈念sama閱讀 38,877評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼详瑞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冬阳?” 一聲冷哼從身側(cè)響起蛤虐,我...
    開封第一講書人閱讀 37,633評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎肝陪,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刑顺,經(jīng)...
    沈念sama閱讀 44,088評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡氯窍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,443評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蹲堂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狼讨。...
    茶點故事閱讀 38,563評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖柒竞,靈堂內(nèi)的尸體忽然破棺而出政供,到底是詐尸還是另有隱情,我是刑警寧澤朽基,帶...
    沈念sama閱讀 34,251評論 4 328
  • 正文 年R本政府宣布布隔,位于F島的核電站,受9級特大地震影響稼虎,放射性物質(zhì)發(fā)生泄漏衅檀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,827評論 3 312
  • 文/蒙蒙 一霎俩、第九天 我趴在偏房一處隱蔽的房頂上張望哀军。 院中可真熱鬧沉眶,春花似錦、人聲如沸杉适。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,712評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽猿推。三九已至传藏,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間彤守,已是汗流浹背毯侦。 一陣腳步聲響...
    開封第一講書人閱讀 31,943評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留具垫,地道東北人侈离。 一個月前我還...
    沈念sama閱讀 46,240評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像筝蚕,于是被迫代替她去往敵國和親卦碾。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,435評論 2 348