mysql源码太多,初次看到不免让人没有头绪,如果根据特定需求,分模块的去阅读分析,查找特定功能如何实现之类的需求,可以从有限的几个入口看起,有两个主要入口:服务器启动,客户端请求处理。市面上的书大部分都是通过客户端请求处理来讲起如何阅读mysql源码,举的例子通过select 查询,如《深入理解mysql核心技术》以及《深入理解mysql》两本书。
1 服务器初始化启动过程,包含参数以及参数文件的处理,服务器线程初始化等等,都是从sql目录下的mysqld.cc里面的mysqld_main函数开始的。
注释清晰,可以从这里挑选感兴趣的服务器初始化部分跳转到相应代码处学习。
2 客户端请求处理,mysql是相对比较复杂的,首先要确定好学习哪个部分,是mysql的网络协议还是具体命令行的执行代码。
网络协议部分,mysql客户端与服务端交互可从sql目录的net_serv.cc看起,里面包含了mysql服务器对网络通信的基本封装。
mysql命令的具体执行,客户端请求会被mysqld.cc的do_handle_one_connection函数捕获,然后创建线程来处理发送过来的命令,
处理函数是sql_parse.cc里面的do_command函数,do_command函数处理后,调用该文件的dispatch_command函数处理请求。
dispatch_command函数是所有客户端命令处理的集散地,对所有命令的代码实现,都可以通过这里入手。
https://my.oschina.net/llzx373/blog/211681