如何学mysql源码_《怎么学习MySQL源码》公开课资料分享

原标题:《怎么学习MySQL源码》公开课资料分享

分享嘉宾

:王松磊,现任职于UCloud,从事MySQL数据库内核研发工作,主要负责UCloud云数据库UDB的内核故障排查及新特性的研发。

分享主题:《怎么学习MySQL源码》,主要介绍MySQL架构,及MySQL代码结构、获取和编译方法;并以MySQL插件开发为例,演示如何开发源码。

课上,王老师非常详细地介绍了源码的学习方法,并分享了很多相关资料。

提示:PPT的内容有限,建议直接观看视频,效果更佳!

1、资料发布

本次公开课的PPT、视频均已上传到百度云盘,链接:https://pan.baidu.com/s/1gfEbHC3

2、你问我答

A. MySQL代码量较大,作为一个新人怎么开始做MySQL代码学习?

答:学习代码,需要你有C和C++的基础,能读懂基础函数的代码、数据库的基础理论知识,知道事务、日志、ACID等基础概念;同时要求你了解MySQL的基本架构,知道MySQL分为哪些模块。

学习时:

首先,建议有条件的同学,阅读https://dev.mysql.com/doc/internals/en/ 对mysql源码大概结构有个基础概念;

其次,学习编译、安装以及使用gdb调试MySQL;

最后,选择自己感兴趣或者工作需要的模块,先学习使用方法,然后从基本功能开始学习源码。

如果暂时没有目标,建议可以先学习MySQLl的基本启动流程、连接处理、命令处理等。

B. 想要生成coredump文件就要在启动时加上--core-file选项,建议这么做么?另外,意外崩溃时生成coredump文件,对于不熟悉源码的人怎么去检查、排查问题呢?

答:调试和学习使用的MySQL,建议添加该选项,并编译成debug版本;如果不熟悉源码,发生coredump后,根据coredump文件定位发生问题的函数和模块,然后根据实际进行的操作进行排查。另外可以借助网络,比如去stackoverflow上查找类似的问题或者直接提问。

C.从事MySQL源码这方面工作,对linux C这块有什么要求么?

答:首先C语言的基础是要有的。MySQL有很多版本,包括linux、windows,可能要根据实际的需要来选择不同的平台。但源码实现的原理不会有太大的差别。

D. MySQL全部是sleep状态,但是LSN一直涨,请问下是什么原因?

答:这个要具体情况具体分析,我们能查看到的Last checkpoint本身就可能落后于Log sequence number,然后进行追赶。如果确定mysql未做任何操作,而redo在不断的生成,可以使用perf或者pstack查看一下mysqld是否有异常。

E. 作为运维DBA,学习源码对工作上有哪些实际帮助?

答:运维dba学习源码本身就有天然的优势,很多源码专家都是由DBA转型的。

是否对工作有实际的帮助,我觉得是见仁见智的问题,个人觉得了解原理可以更好帮助运维,比如设置sync_binlog和innodb_flush_log_at_trx_commit为1可以保证宕机时不丢数据,但是如果了解原理,可以延伸到更多的知识,比如什么时候可以不设置成双1,不设值成双1怎么保证数据的一致,数据丢失是否可以追补回来等等。

但是另一方面,学习源码本身就是要消耗很多的时间,可能会消耗掉很多工作外的时间,即使对运维有帮助,也不是立竿见影的,是一个技术沉淀的过程,需要自己去做权衡。

3、分享内容

814bc6f37e225b6f2987abe4249638a1.png

0a6cf31487883c2487ff18c1e4d1b2f5.png

81496beada530fd8184f221a3a5b0a0c.png

117ca18bbd0fd153f8b0af4693399a0a.png

3dc0a42778f4fde7d4f4f7fe0bb971b9.png

1dbe024f452ccb59327820d774d79ed0.png

62829d03100183cdda26de822fb8ee33.png

38e904a6101cd1bff1e120ce890f591d.png

117886c4acc0ca5e33486d03305b37b7.png

7ba2cb17375de9ada0b356b21b4b2ea2.png

207ec13375c2ca833ad104d54c4e34a8.png

364f391017aa86b3176aea403568489f.png

baa0f856e5cf97c2b248e55585740671.png

9c43b1a7731d61968c78562401debbe4.png

b7ed39703f2860eeb6787c5d45a894a9.png

e6f6b3c7b53a58d71891000303356e4e.png

5d864fece67d8ee540cae05113ea81ae.png

e8f44c0c50c3a9a6ebaa482b4539eb3b.png

2035682be076cfe42b15ca258ec49aff.png

9c52e873ea0c5978043d390ab6833203.png

9efb762d78bc3b673b926c9013be3e6a.png

2935c8b881d1471af38d1f7568ebf9c4.png

a567edf732de5897bfdeaaaf3286366e.png

责任编辑:

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值