MySQL double write存在意義
背景:
MySQL預設每個page size是16k,而OS通常最小I/O單元是4k,所以如果寫page時可能需要呼叫4次OS I/O才能完成。假定在執行兩次時DB crash了,這時page只寫了一部分,就產生了partial write(不完整寫)。
MySQL double write的設定就是為了在發生partial write時任然保證已經commit的資料不丟失,以及資料檔案不損壞。
疑惑:
MySQL double write很多文章中有介紹,但理解過程中有一些問題:
既然寫double write buffer也是寫硬碟ibdata1檔案,這塊和直接寫.ibd 檔案又有什麼區別?
寫double write buffer 也是寫16k page 也可能出現分裂情況吧?
只是因為寫double write buffer是順序寫速度快一些?
解疑:
其實MySQL double write主要存在機制是在恢復時:
1> .ibd資料檔案page在發生partial write不完整寫時可以從double write檔案恢復
2> double write檔案page損壞時,因為此時.ibd資料檔案沒有被修改,可以直接利用已經commit的redo恢復前滾
3> redo page會發生partial write嗎?redo page大小是512位元組小於4k os最小io不會存在partial write問題
以上,想想如果沒有double write機制,僅僅只存在.ibd檔案,直接寫在partial write不完整寫時就沒有地方可恢復的了。
附圖:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25583515/viewspace-2685493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL double writeMySql
- 【MySQL】八、double write 淺析.MySql
- mysql之 double write 淺析MySql
- mysql innodb double write概念彙總MySql
- MySQL的Double Write並不難理解MySql
- 【MYSQL】innodb兩次寫(double write)實現解析MySql
- MySQL的double write和Oracle對比學習MySqlOracle
- 敲黑板:InnoDB的Double Write,你必須知道
- 關於MYSQL中FLOAT和DOUBLE型別的儲存MySql型別
- 服務網格的存在意義 -kelseyhightower
- 闡述遊戲謎題的存在意義及其設計原則遊戲
- storage儲存的cache快取相關機制write-though和write-back(write-caching)快取
- MySQL自定義函式與儲存過程MySql函式儲存過程
- com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLEMySqlJDBCLDA
- MySQL:MGR 學習(1):寫集合(Write set)MySql
- MySQL死鎖案例 – Learn. Write. Repeat.MySql
- (9)mysql 中的儲存過程和自定義函式MySql儲存過程函式
- MySQL 字串轉double轉換棧幀(可能丟失精度)MySql字串
- double型別資料在記憶體中中儲存格式型別記憶體
- MySQL 儲存過程定義條件和異常處理MySql儲存過程
- Software caused connection abort: socket write error/mysql/tomcatErrorMySqlTomcat
- double 函式函式
- MySQL儲存MySql
- 深入mysql建立自定義函式與儲存過程的詳解MySql函式儲存過程
- mysql 儲存過程中變數的定義與賦值操作MySql儲存過程變數賦值
- 【MySQL】ERROR 1878 (HY000): Temporary file write failure.MySqlErrorAI
- MySQL引數DELAY_KEY_WRITE的詳細說明MySql
- Android版本分裂,開發者不用太在意Android
- 我的MYSQL學習心得(10) : 自定義儲存過程和函式MySql儲存過程函式
- HBO新劇《切爾諾貝利》的大火, 再次確認了工業機器人的存在意義機器人
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- MySQL 建立外來鍵報錯Can't write; duplicate key in tableMySql
- mysql 5.5引數--innodb_read(write)_io_threadsMySqlthread
- MySQL 儲存引擎MySql儲存引擎
- MySQL儲存引擎MySql儲存引擎
- “21天教你學會C++”,不要太在意~C++
- NSUserDefault 儲存自定義物件物件
- 【Mysql 學習】Mysql 儲存引擎MySql儲存引擎