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统计实现》
- patch mysql-5.5.20 with mysql-5.5.20.io_stat.patch 分析
- mysql-5.5.32-android.patch.v1
- 浅谈MySQL慢查询日志及microslow patch(msl patch)
- 浅谈MySQL慢查询日志及microslow patch(msl patch)
- 浅谈MySQL慢查询日志及microslow patch(msl patch)
- patch
- Patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- patch
- sqlserver中常见的操作
- JRebel安装使用说明(真正的实现热布署)
- Teechart显示:按照时间轴自右向左推移(VC6.0实现)
- Adapter 模式的小例子以及分析
- 解析ASP.NET Mvc开发之删除修改数据
- patch mysql-5.5.20 with mysql-5.5.20.io_stat.patch 分析
- 中兴手机业务换帅:被迫触“网”
- 【HTTP】Fiddler(三)- Fiddler命令行和HTTP断点调试
- EXCEL中公式 VLOOKUP 的使用
- AS3中命名空间使用要点
- Ubuntu下为virtualbox设置共享文件夹,共享粘贴板,识别USB设备问题
- 几种任务调度的 Java 实现方法与比较
- android打包批处理
- [LeetCode] Add Two Numbers