如何阅读mysql源代码_我是如何开始阅读MySQL源码的?

本文记录了一位读者从为何阅读MySQL源码,到逐步理解MySQL客户端/服务器通信协议,解析源码中关键函数的过程,包括do_command()、dispatch_command()以及表文件格式如.frm、.MYD和.MYI。通过实践和文档研究,逐步揭开MySQL的执行流程和存储引擎的秘密。
摘要由CSDN通过智能技术生成

1. 为什么要阅读MySQL源码?

之前已经看过 高性能MySQL 和 MySQL技术内幕InnoDB存储引擎, 但总觉得只是看看书上这么说还是不够.

比如 高性能MySQL 里画的有B-Tree索引的示意图,可是B-Tree索引究竟长什么样子,在MySQL里是怎么存储的,没什么概念; 里边还提到关联查询的”泳道图”,在代码层面到底是怎么执行的,也不清楚.

2. 从哪儿开始?

直接看MySQL的源码有点困难.

好在有一本讲MySQL的书, 叫 Understanding.MySQL.Internals, 书虽然有点老,但看起来是个不错的开始.

大概过一下书的内容,发现大部分内容还是看不下去. 只有第4章 Client/Server Communication 还能看.

3. Protocol

Understanding.MySQL.Internals 的第4章 Client/Server Communication 讲了MySQL Server和客户端沟通的协议, 结合着wireshark, 很快就能搞明白.

4. main() -> mysqld_main()

MySQL是由C++写的,入口函数main()直接调用了mysqld_main().

Server启动的代码都在这里,大部分都看不懂.

直到最后的 handle_connections_sockets().

5. handle_connections_sockets()

读过UNP的看这部分代码应该都没问题.

poll()

accept()

thread_scheduler->add_connection()

pthread_create() or thead_cache

handle_one_connection()

for (;;) { <

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值