Query 流程
转载:query_flow
本文简单介绍, 详情参考query
query 入口
do_command函数在sql/sql_parse.cc定义,代码如下:
1 | bool do_command(THD *thd) { |
dispatch
再看dispatch_command函数在sql/sql_parse.cc定义,精简代码如下:
1 | bool dispatch_command(enum enum_server_command command, THD thd, char packet, uint packet_length) { |
parser
mysql_parse函数负责解析SQL(sql/sql_parse.cc), 详情可以参考mysql_parser 精简代码如下:
1 | void mysql_parse(THD *thd, |
query 处理
终于开始执行mysql_execute_command接近3k行, 优化阶段和执行阶段揉在一起, 可以参考execute非常精简代码如下:
1 | int mysql_execute_command(THD *thd) { |