尽管比较罕见,但某些场景还是存在着短连接,即用户执行完请求后,很快断开会话。伴随着频繁创建/销毁连接的过程。
官方博客:
在之前的版本中, THD/NET/VIO总是由接受连接请求的线程来完成,如果是长连接这没有问题,但如果都是短连接的话,就会应先main线程接受新连接请求的效率,在WL#6606中,THD和NET的初始化被移动到worker线程来完成。
0. background
增加新目录sql/conn_handler,定义了大量的类来处理连接部分的逻辑。下图简单描述了下各个类的关系,可能不是很全面,只涉及linux平台下面比较常用的类
增加全局变量:
Connection_acceptor *mysqld_socket_acceptor 用于接受新的连接请求.
Connection_acceptor作为接受socket请求的基类,封装了多种socket请求方式.
Connection_acceptor::m_listener存储了对应的listener对象.
1.主线程监听请求:mysqld_main
初始化 mysqld_socket_acceptor
mysqld.cc:
1692 Mysqld_socket_listener *mysqld_socket_listener=