從MySQL的髒頁說禿頭 + 大肚子,拼命成老闆喜歡的樣子

點擊上方「業餘草」,選擇「置頂公衆號」程序員

第一時間獲取技術乾貨和業界資訊!面試

今年寒冬,百度都「冷的抖起來「。通常的公司,你不感冒也得打噴嚏。而咱們的公司最近連續發了幾回「高燒「!數據庫


本來領導要求讓我招一個牛X的程序員。而我思前想後,MySQL 我不太懂,如何才能招一個滿意的程序員呢?我突然想到,我那些牛逼的同窗,不都一個一個的」禿頭+大肚子「嗎?微信


因而,怎樣才能證實一個程序員技術牛逼呢?」禿頭+大肚子「。嗯,遇到滿意的程序員,我就這樣向領導回報。由於和領導扯技術就是扯淡,」禿頭+大肚子「纔是最有力的說服力。這也是多少人爲數很少的」雙保險」!app


前面我提到的「高燒」。是由於,咱們電商系統線上生產環境,最近總是卡頓。平時插入很快的數據,不定時,隨機的執行超時。。。性能


這個問題,定位了很久,一直沒解決,領導纔要求,招一個懂 MySQL 的大牛。可是通過我最近一段時間的騷操做,變動了幾個系統參數居然「莫名其妙」的好了。因而領導又不招人了,請讓我哭會,我就只會給公司省錢!學習


發生超時異常後,我立馬查看日誌信息。可是從日誌中看不出來什麼問題,我就將目光移動到 SQL 上,懷疑是 SQL 的問題。而後在偶然特別慢的時候,我去阿里雲上看慢查詢日誌,發現同一條 SQL,確實有時候會特別慢。這有點玩大了,數據庫問題我是一個小菜鳥。阿里雲


可是這種問題也沒得選擇,只得硬着頭皮上。因而我就又查看了 RDS 的 IO 指標。發現慢的時候,IO 確實不正常。因而順着這條思路,網上查資料,而且也會惡補一些 MySQL 知識,白天看《高性能 MySQL》,晚上看《MySQL 實戰45講》。最終嘗試着變動一些系統參數,發現還真是書上所說的多是髒頁 flush 問題。url


當內存數據頁跟磁盤數據頁內容不一致的時候,咱們稱這個內存頁爲「髒頁」。內存數據寫入到磁盤後,內存和磁盤上的數據頁的內容就一致了,稱爲「乾淨頁」。不論是髒頁仍是乾淨頁,都是在內存中的。spa


因爲磁盤,比內存慢的不是一點兩點。當內存佔滿的時候,就須要刷髒頁。而刷髒頁的時候,更新操做就須要暫停了,這一點就有點像咱們 Java 中的 Full Gc。


另外 redo log 滿了也要刷髒頁。而刷髒頁時,會嚴重影響 InnoDB 的性能。因此,如何合理的刷髒頁,就須要調優了。


這裏,我給你們推薦一下老司機 DBA 經常使用的配置調優策略。合理地設置 innodb_io_capacity 的值,而且平時要多關注髒頁比例,不要讓它常常接近 75%。怎麼計算這個比例呢?這裏我列出一個統計方法。


上面的計算統計獲得髒頁的比例。


還有 innodb_io_capacity 這個參數了,它通常表明的是 InnoDB 引擎模式下,你的磁盤能力。老司機通常你們設置成磁盤的 IOPS。


另外 redo log 建議你也不要設置的過小,若是 redo log 設置得過小,redo log 寫滿。那麼會佔用系統 I/O,影響 DML。若是操做頻繁,那麼慢的和拖拉機同樣。



若是有想一塊兒精進的,加我微信號:xttblog 爲好友,一塊兒精進!在這個寒冬拼命成你老闆喜歡的樣子(非禿頭和大肚子)!


推薦閱讀

本文分享自微信公衆號 - 業餘草(yyucao)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索