[MySQL 优化] 移除多余的checksum
生活随笔
收集整理的這篇文章主要介紹了
[MySQL 优化] 移除多余的checksum
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.bug#64170 根據(jù)bug#64170的描述,一個(gè)page在讀入內(nèi)存時(shí)就已經(jīng)計(jì)算了一次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); 在函數(shù)buf_zip_decompress中,當(dāng)設(shè)置了innodb_checksums時(shí)(對(duì)應(yīng)內(nèi)部變量srv_use_checksums),則在需要先計(jì)算比比較checksum,然后才會(huì)調(diào)用page_zip_decompress解壓。 也就是說(shuō),對(duì)于一個(gè)page,總共進(jìn)行了兩次checksum,第二次明顯是多余的。在MySQL5.6.7也已經(jīng)移除了第二次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) 根據(jù)Facebook的Mark Callaghan的測(cè)試,獲得了5%的QPS提升。 . . 2.bug#64715 在函數(shù)buf_LRU_free_block中,對(duì)于壓縮page,即使是非臟頁(yè),也會(huì)去計(jì)算checksum,facebook為其增加了一個(gè)參數(shù)來(lái)控制,為false表示禁止這種行為,只checksum臟頁(yè) 當(dāng)buffer pool較小時(shí),free list一般為空,這時(shí)候當(dāng)需要從磁盤讀取一個(gè)page后,就得從lru上驅(qū)逐一個(gè)block。因此會(huì)頻繁的調(diào)用到buf_LRU_free_block 對(duì)于只讀查詢,這會(huì)減少一些CPU開銷(簡(jiǎn)單的測(cè)試,很明顯的usr cpu 從13%降到12%)
總結(jié)
以上是生活随笔為你收集整理的[MySQL 优化] 移除多余的checksum的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 写入指定长度的字节到文件
- 下一篇: centos操作系统搭建Lamp环境(a