博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[MySQL 优化] 移除多余的checksum
阅读量:6439 次
发布时间:2019-06-23

本文共 1090 字,大约阅读时间需要 3 分钟。

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 
 validation on 
InnoDB
 
. 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%)

转载地址:http://wiuwo.baihongyu.com/

你可能感兴趣的文章
数据仓库保存历史数据方法之拉链表
查看>>
Overcoming the List View Threshold in SharePoint CAML queries
查看>>
图像滤镜艺术---连环画滤镜
查看>>
Oralce sql (+) 补充
查看>>
hdu 2665 划分树
查看>>
laravel中的plicy授权方法:
查看>>
基于R进行相关性分析--转载
查看>>
常用 cdn
查看>>
tomcat8 管理页面403 Access Denied的解决方法
查看>>
怎样避免应用冷启动
查看>>
把vux中的@font-face为base64格式的字体信息解码成可用的字体文件
查看>>
vue sync
查看>>
CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录
查看>>
Wix 安装部署教程(十一) ---QuickWix
查看>>
Spring @Value注解问题
查看>>
python抓取51CTO博客的推荐博客的全部博文,对标题分词存入mongodb中
查看>>
P1886 滑动窗口
查看>>
PHP高级教程-Data
查看>>
UIColor与十六进制字符串互转
查看>>
水木清华小爬虫
查看>>