[MySQL 优化] 移除多余的checksum
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                [MySQL 优化] 移除多余的checksum
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            1.bug#64170 根據bug#64170的描述,一個page在讀入內存時就已經計算了一次checksum: buf_page_get_gen |–>buf_read_page ? (buf0buf.c:2543) ->buf_read_page_low ->buf_page_io_complete ->buf_page_is_corrupted ->page_zip_calc_checksum  2612 ? ? case BUF_BLOCK_ZIP_PAGE: 2613 ? ? case BUF_BLOCK_ZIP_DIRTY   |–> success = buf_zip_decompress(block,?srv_use_checksums);  在函數buf_zip_decompress中,當設置了innodb_checksums時(對應內部變量srv_use_checksums),則在需要先計算比比較checksum,然后才會調用page_zip_decompress解壓。  也就是說,對于一個page,總共進行了兩次checksum,第二次明顯是多余的。在MySQL5.6.7也已經移除了第二次checksum。   Performance:?InnoDB: This fix removes redundant?checksum?validation on?InnoDB?pages. The checksum was being verified both when a compressed page was read from disk and when it was uncompressed. Now the verification is only performed when the page is read from disk. (Bug #14212892, Bug #64170)   根據Facebook的Mark Callaghan的測試,獲得了5%的QPS提升。 . . 2.bug#64715 在函數buf_LRU_free_block中,對于壓縮page,即使是非臟頁,也會去計算checksum,facebook為其增加了一個參數來控制,為false表示禁止這種行為,只checksum臟頁  當buffer pool較小時,free list一般為空,這時候當需要從磁盤讀取一個page后,就得從lru上驅逐一個block。因此會頻繁的調用到buf_LRU_free_block   對于只讀查詢,這會減少一些CPU開銷(簡單的測試,很明顯的usr cpu 從13%降到12%) 
                            
                        
                        
                        總結
以上是生活随笔為你收集整理的[MySQL 优化] 移除多余的checksum的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 写入指定长度的字节到文件
- 下一篇: iOS中AVFoundation的简单使
