handle_one_connection()

函数所在文件:sql/sql_parse.cc

该函数是处理单个查询请求的接口函数。

主要流程如下:

1.初始化线程

hread_scheduler.init_new_connection_thread()

2.在完成必要的检查和初始化后,进入一个for(;;)循环。

3.认证用户

if (login_connection(thd))
  goto end_thread;

4.初始化thd来接受查询

prepare_new_connection_state(thd);

5,执行查询代码

    while (!net->error && net->vio != 0 &&
           !(thd->killed == THD::KILL_CONNECTION))
    {
      if (do_command(thd))
	break;
    }

可见,do_command(thd)是实际处理查询的函数。

6.进入到连接结束和清理阶段

close_connection(thd, 0, 1);
    if (thread_scheduler.end_thread(thd,1))
      return 0;                                 // Probably no-threads
上述语句将调用mysqld.cc中的one_thread_per_connection_end() ,选择结束或缓存线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值