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() ,选择结束或缓存线程。

你可能感兴趣的:(Connection)