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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【RMAN】什麼是Fast Recovery Area(FRA),如何配置FRAAST
- Centos5.5中安裝Mysql5.5過程分享CentOSMySql
- MySQL crash recovery恢復慢分析MySql
- centos7 RPM MySQL5.5CentOSMySql
- MySQL:Innodb crash recovery一些程式碼MySql
- MySQL運維之binlog_gtid_simple_recovery(GTID)MySql運維
- MySQL5.5升級到MySQL5.7踩坑日記MySql
- MySQL資料庫innodb_fast_shutdown引數MySql資料庫AST
- 企業環境下MySQL5.5調優MySql
- ubuntu 16.04+nginx+mysql+php7.1+laravel5.5環境UbuntuNginxMySqlPHPLaravel
- MySQL 5.5使用者遷移到5.7使用者MySql
- CentOS安裝MySQL5.5的完整步驟DSITCentOSMySql
- MySql5.5忘記root密碼怎麼辦MySql密碼
- 5.5
- fast-inAST
- Win10安裝Mysql5.5卡住假死怎麼回事 win10系統安裝Mysql5.5卡死未響應如何解決Win10MySql
- Linux下編譯安裝Mysql 5.5的簡單步驟Linux編譯MySql
- Rockchip RK3588 - Rockchip Linux Recovery recovery原始碼分析Linux原始碼
- Fast Car GameASTGAM
- fast-bevAST
- 5.5py
- 【Fast R-CNN】Fast R-CNN (2015) 全文翻譯ASTCNN
- Fail-Fast in JavaAIASTJava
- Fail - Fast機制AIAST
- ASM Fast Mirror ResyncASMAST
- fast planner總結AST
- 5.5(衝刺七)
- 手機刷TWRP Recovery
- mysql point in time recovery using sql_thread SQL_Thread增量恢復binlog 要點MySqlthread
- FAST Globular Cluster observation logAST
- 數字與字串5.5字串
- The Db2 Recovery History FileDB2
- SQL Server進行Crash RecoverySQLServer
- Fail-fast 機制分析AIAST
- [Java基礎]Fail-FastJavaAIAST
- 密度聚類。Clustering by fast search and聚類AST
- lumen5.5學習(二)
- lumen5.5學習(一)
- Laravel 5.5 validator 使用 request fromLaravel