Mysql 筆記二

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   ar   java   for   

 

Mysql 筆記二

Mysql 筆記二Table of Contents
  • 1. 前言
  • 2. Master Thread 工作方式
    • 2.1. 主迴圈(loop)
    • 2.2. 後台循(backgroup loop)
    • 2.3. 重新整理迴圈(flush loop)
    • 2.4. 暫停迴圈(suspend loop)
  • 3. InnoDB關鍵特性
    • 3.1. 插入緩衝(Insert Buffer)
    • 3.2. 兩次寫(Double Write)
    • 3.3. 自適應雜湊索引(Adaptive Hash Index),預設開啟
    • 3.4. 非同步IO(Async IO)
    • 3.5. 重新整理鄰接頁(Flush Neighbor Page)
  • 4. Mysql 啟動、關閉、恢複
    • 4.1. innodb _fast _shutdown
    • 4.2. innodb _force Srecovery
1 前言2 Master Thread 工作方式

Master Thread是最進階別的線程,控制著記憶體的管理

2.1 主迴圈(loop)

loop迴圈是主要的迴圈,大多操作是在這個迴圈中完成的,有兩大操作:每秒操作和每10秒操作

  • 每一秒操作
    • 日誌緩衝重新整理到磁碟(總是)
    • 合并插入緩衝(可能)
    • 至多重新整理100個InnoDB緩衝池中的髒頁(可能)
    • 如果當前沒有使用者活動,切換到backgroup loop
  • 每十秒操作
    • 重新整理100個髒頁到磁碟(可能)
    • 合并最多5個插入緩衝(總是)
    • 將日誌重新整理到磁碟(總是)
    • 刪除無用undo頁(總是)
    • 重新整理100個或者10個髒頁到磁碟(總是)
2.2 後台循(backgroup loop)
  • 刪除無用的Undo頁 (總是 )
  • 合并20個插入緩衝 (總是)
  • 跳到主迴圈(總是)
  • 不斷重新整理100個頁直到符合條件(可能)
2.3 重新整理迴圈(flush loop)2.4 暫停迴圈(suspend loop)3 InnoDB關鍵特性 3.1 插入緩衝(Insert Buffer)
  • 運用插入緩衝的兩個條件:
    • 索引是輔助索引(Secondary index)
    • 索引不是唯一的(Unique)
  • 叢集索引、非叢集索引
  • 對於非叢集索引的更新中,因為要離散尋找,所以會比較慢。所以Insert Buffer做的操作是:
    • 先判斷插入的非聚集引頁是否在緩衝池中,在,則直接插入
    • 不在,則先放一個Insert Buffer
    • 再以一定頻率進行Insert Buffer和輔助引頁子節點合并

這通常能將多個插入合并到一個操作中,大大提高了非聚集引插入的效能 用命令可查看:

 mysql> show engine innodb status\G; *************************** 1. row ***************************Type: InnoDBName: Status: =====================================141027 21:38:14 INNODB MONITOR OUTPUT=====================================Per second averages calculated from the last 8 seconds-----------------.....-------------------------------------INSERT BUFFER AND ADAPTIVE HASH INDEX-------------------------------------Ibuf: size 1, free list len 0, seg size 2, 0 mergesmerged operations:insert 0, delete mark 0, delete 0discarded operations:insert 0, delete mark 0, delete 0Hash table size 276707, node heap has 0 buffer(s)0.00 hash searches/s, 0.00 non-hash searches/s
3.2 兩次寫(Double Write)
  • why Double Write 當發生宕機時,有些頁是16K的,可能唯寫了8K,導致了部分失效。重做日誌是針對頁來說的,如果這個頁本來就已經失效了,重做也沒意義。所以發生這種情況,我們一個頁的副本來還原該頁,再重做。這就是Double Write
  • Double Write 架構 double write由兩部分組成,一部分是記憶體中的double write buffer,大小為2M,另一部分是物理磁碟上共用資料表空間的2個區,同樣為2M。對緩衝池的髒頁進行重新整理時,並不直接寫磁碟,而是先將髒頁複製到記憶體中的double write buffer,之後通過doublewrite buffer再分兩次,每次1M順序地定入共用資料表空間的物理磁碟,再馬上同步磁碟。 觀察命令:
mysql> show global status like ‘innodb_dblwr%‘\G;*************************** 1. row *************************** Variable_name: Innodb_dblwr_pages_written Value: 0*************************** 2. row *************************** Variable_name: Innodb_dblwr_writes Value: 0 2 rows in set (0.00 sec)
3.3 自適應雜湊索引(Adaptive Hash Index),預設開啟
  • what is AHI InnoDB儲存引擎會監控對錶上各索引頁的查詢,如果觀察到建立雜湊索引可以帶來速度提升,則建立雜湊索引。AHI 是通過緩衝池的B=樹頁構造,建立速度很快
  • AHI要求
    • 對頁的連續訪問模式是一樣的。訪問模式一樣指的是查詢條件一樣
    • 以該模式訪問了100次
    • 頁通過該模式訪問了N次,其中N=頁中記錄*1/16
3.4 非同步IO(Async IO)

沒什麼好說的,非同步好處不用說

3.5 重新整理鄰接頁(Flush Neighbor Page)

當重新整理一個髒頁時,檢測該頁所在的區的所有頁,如果是髒頁,一起刷。

4 Mysql 啟動、關閉、恢複 4.1 innodb _fast _shutdown

在關閉時,參數innodb _fast _shutdown影響行為,參數可取值0、1、2,預設為1

  • 0:表示MYSQL關閉時,要完成所有的full purge的merge insert buffer,重新整理所有的髒頁。如果對 MySQL升級,這個參數必須調0
  • 1:預設值,不完成full purge和merge insert buffer,在緩衝池中的一些資料髒頁還是會重新整理回磁碟
  • 2:不完成 full purge ,merge insert buffer,也不重新整理緩衝池,而是將日誌都寫入記錄檔,下次啟動進行恢複操作(recovery)
4.2 innodb _force Srecovery

影響恢複情況,預設為0

  • 1:忽略檢查到的corrupt頁
  • 2:阻止Master Thread運行
  • 3:不進行事務的復原操作
  • 4:不進行插入緩衝的合併作業
  • 5:不查看撤銷日誌,裝未提交的事務視為已提交
  • 6:不進行前滾操作

Date: <2014-10-28 周二>

Author: eqyun

Created: 2014-10-28 周二 13:25

Emacs 24.3.1 (Org mode 8.2.10)

Validate

Mysql 筆記二

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.