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

来源:互联网 发布:中岛美嘉长相知乎 编辑:程序博客网 时间:2024/05/01 16:53

摘要:

为了学习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统计实现》

0 0
原创粉丝点击