patch mysql-5.5.20 with mysql-5.5.20.io_stat.patch 分析

摘要:

为了学习mysql整体的体系结构,希望通过一步一步的patch前人的修改,然后通过分析前人的修改,理解patch的含义,加以理解,争取在同等基础上优化patch或者动手加入一个类似的patch,达到学习mysql体系结构,摸清各个mysql的patch的特性。

关键词:mysql  patch  innodb

预备:mysql-5.5.20   mysql-5.5.20.io_stat.patch  centos 6.3 x64虚拟环境以及必要的rpm软件包

正文:

第一步:mysql-5.5.20添加patch,详见本人《innodb存储引擎之综述》

第二步:编译并安装,详见本人《innodb存储引擎之mysql的debug环境搭建》

第三步:查看patch特性,详见 网易杭研院 关于《mysql IO统计实现

第四步:自我分析

个人感觉增加这个新特性其实说起来是挺简单的,对于新人学习mysql代码架构还是挺有帮助的,小而全面,短而精湛;

主题思想就是通过innodb存储引擎层次通过函数指针传递使连接控制层THD获得该连接对逻辑和物理页面的访问统计,沿着函数指针

_io_stat_func_ptr io_stat_func_ptr;

io_stat_func_ptr = innobase_hton->io_stat_ptr;

hton->io_stat_ptr = thd_io_incr;

个人思考:

1、数据库连接逻辑层:(THD layer)THD->thd_io_incr->(innodb layer)innobase_hton->io_stat_ptr->(通过io_stat_func_ptr函数指针调用实现innodb层的统计)(io_stat_func_ptr其实就是THD安排在innodb层的探针)

2、以后个人实现相关功能,只要牢牢把握io_stat_func_ptr的类似探测功能就好,传导途径仍然是通过指针赋值即可。

这条道路基本上就可以完美的连接innodb引擎和THD连接相关的PHY和LOG页面访问情况。

3、自我测试:创建一个叫做is_my_func_ptr作为探针争取在profile中体现,结果取值和phy一样。

在THD层的函数定义为thd_is_my,hander层的函数定义为is_my_ptr,innodb层的函数定义为is_my_func_ptr。

SQL profile层的函数定义Is_mys()。

引用:网易杭研后台技术中心的博客《MYSQL IO统计实现》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值