fast recovery for innodb1.07 in Mysql 5.5
http://www.mysqlperformanceblog.com/2007/07/17/innodb-recovery-is-large-buffer-pool-always-better/
這個情況在MYSQL 5.5,InnoDB Plugin 1.0.7以後將有所改變 [@more@]
(以下內容部分轉載)
首先來了解一個崩潰恢復的原理 :
崩潰恢復(Crash recovery)可以看成兩個階段,
第一階段稱為掃描重做日誌(Redo scan),這時InnoDB讀取磁碟上的Redo Log,並將其存放到一個Hash表中;
第二階段應用這些Redo Log,將這些日誌應用到Data Page上。
在將Redo Log讀取到Buffer Pool的Hash表的過程中,InnoDB在需要的時候分配16K的Block用來儲存這個這些Redo。
為了確保Buffer Pool中有足夠剩餘空間來儲存資料頁(Data Page),這樣如果Redo很大的話,這個Block heap也會很大。
這裡InnoDB每次讀取一個Redo的時候,都會遍歷一次前面的Heap來確保,沒有佔用太多的空間。
所以,如果崩潰前InnoDB的Buffer Pool很大,Dirty Page很多,這個Heap可能很大,每次遍歷就會大大降低恢復時的效率。
InnoDB透過給這個Heap增加一個header來儲存這些資訊,解決了上面的問題。
恢復過程中,另一個耗時的操作是發生在應用Redo的階段。
每一個應用了Redo Log的Data Page都會被放到一個叫Flush_list的連結串列中等待Flush,
而這個連結串列中的Data Page是嚴格安裝其LSN順序排列的,
在InnoDB正常工作的時候,這總是沒有問題的,因為Data Page的LSN值總是單調增加的。
但是在恢復階段,InnoDB則需要不斷的掃描這整個連結串列來確定一個Data Page的位置。
InnoDB在恢復階段,透過一棵輔助的紅黑樹(Red-Black Tree)來儲存這些Page,藉此來避免單純的掃描。
在恢復階段結束後,這棵紅黑樹將被刪除,Flush_list仍然保持原來的結構。
測試結果;
在InnoDB Blog中,給出了一個測試:
Plugin1.0.6花費7小時38分鐘恢復的過程,
使用Plugin1.0.7則僅僅花了13分56秒,總共快了32倍,
其中掃描Redo階段快了16倍,應用日誌階段快了35倍。
以下是原文:
configuration parameters:
–innodb-buffer-pool-size=18g
–innodb-log-file-size=2047m
–innodb-adaptive-flushing=0
–innodb-io-capacity=100
The latter two are used to throttle flushing in order to maximize the number of dirty pages.
It took only about 20 min of running a workload to arrive to the test dataset, including cache prewarming.
So at time of crash we had:
Modified db pages 1007907
Redo bytes: 3050455773
And the recovery times were:
Plugin 1.0.7 (also Plugin 1.1): 1m52s scan, 12m04s apply, total 13m56s
Plugin 1.0.6: 31m39s scan, 7h06m21s apply, total 7h38m
1.0.7 (and Plugin 1.1) is better 16.95x on scan, 35.33x on apply, 32.87x overall
參考文獻:
Changes in InnoDB Plugin 1.0.7 :
http://dev.mysql.com/doc/innodb-plugin/1.1/en/innodb-changes-107.html
Introduction to MySQL 5.5
http://dev.mysql.com/tech-resources/articles/introduction-to-mysql-55.html
InnoDB recovery is now faster…much faster
http://blogs.innodb.com/wp/2010/04/innodb-performance-recovery/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/703656/viewspace-1037169/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11gR2 fast recovery area = flash recovery areaOracleAST
- New in Mysql 5.5MySql
- 【RMAN】什麼是Fast Recovery Area(FRA),如何配置FRAAST
- MySQL 5.5 mysqlimport介紹MySqlImport
- mysql5.5安裝MySql
- 安裝mysql5.5MySql
- MySQL 5.5 模式匹配LIKEMySql模式
- MySQL 5.5 Master/Slave 配置MySqlAST
- Fast Recovery Area空間用滿後的自動清理機制AST
- Mysql 5.5 重置root密碼MySql密碼
- MySQL 5.5 複製搭建流程MySql
- MySQL 5.5 mysqlbinlog 介紹MySql
- MySQL 5.5 統計資訊收集MySql
- CentOS升級MySQL到5.5CentOSMySql
- CMAKE安裝mysql5.5MySql
- MySQL 5.5新特性詳解MySql
- MySQL 5.5常用資訊函式MySql函式
- Index of /Downloads/MySQL-5.5/IndexMySql
- Centos5.5中安裝Mysql5.5過程分享CentOSMySql
- Ubuntu14.04LAMP搭建(Apache2.47+MySQL5.5+PHP5.5)UbuntuLAMPApacheMySqlPHP
- mysql server 5.5 version版本初識MySqlServer
- MySQL 5.5儲存引擎介紹MySql儲存引擎
- MySQL 5.5 mysqldump備份說明MySql
- CentOS 6.5下安裝MySQL 5.5CentOSMySql
- mysql5.5 performance_schema 初探MySqlORM
- MySQL 5.5 -- innodb_purge_threadsMySqlthread
- redhat 5.5 配置 mysql AB複製RedhatMySql
- MySQL 5.5 刪除索引的方法MySql索引
- MySQL 5.5 MyISAM表鎖測試MySql
- MySQL 5.5 配置檔案設定MySql
- MySQL 5.5 原始碼安裝流程MySql原始碼
- MySQL crash recovery恢復慢分析MySql
- MySQL InnoDB Update和Crash Recovery流程MySql
- 處理歸檔滿了fast_recovery_area無剩餘空間的案例AST
- 長事務強制重啟後一直處於 Fast Recovery 狀態AST
- centos7 RPM MySQL5.5CentOSMySql
- Install mysql5.6 on CentOS5.5MySqlCentOS
- MySQL 5.5 主主複製搭建流程MySql