mysql源代码阅读入口

本文介绍了MySQL源代码中服务器启动初始化过程及客户端请求处理的关键部分。从mysqld.cc的mysqld_main函数出发,解析服务器初始化流程;通过do_handle_one_connection函数和do_command函数,了解客户端请求处理机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    MySQL源代码100MB的大包,初次看到的时候难免心生惧意,但如果只是寻找特定功能的实现之类的要求的话,可以从有限的几个入口开始看起,一般而言,有以下两个主要入口:服务器启动,客户端请求处理。

    1.对于服务器启动初始化过程,包括参数及参数文件的处理,服务器线程初始化等等,都是从sql目录下的mysqld.cc里面的mysqld_main函数开始的。

    代码总共五百来行,注释及代码都相对比较明晰,可以从这里挑选感兴趣的服务器初始化部分跳转到相应代码处学习。


    2.对于客户端请求的处理,mysql是相对比较复杂的,首先,确定好是想要学习哪个部分,是mysql的网络协议还是具体命令的执行代码。

    2.1 mysql网络协议,对于mysql的客户端与服务端交流感兴趣的,可以从sql目录的net_serv.cc看起,里面包含了mysql服务器对网络通信的基本封装。

    2.2 mysql命令执行,客户端请求会被mysqld.cc的do_handle_one_connection函数捕获,然后创建新线程来处理发送过来的命令,处理函数是sql_parse.cc里面的do_command函数,do_command函数对客户端发送过来的进行一些通用处理后,调用该文件里面的dispatch_command函数处理请求。dispatch_command函数是所有客户端命令处理的集散地,700行代码,对所有命令的代码实现,都可以从这里入手。

转载于:https://my.oschina.net/llzx373/blog/211681

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值