mysql的连接组件
1.连接组件包含什么?(以下为我个人的理解)
1.连接器(基于协议实现)
2.连接管理模块
3.连接进程模块(包括线程管理模块和连接线程模块)
4.用户模块(用户校验)
2.连接池组件都在做什么?
首先在mysql的整个连接过程中,和我们直接打交道的通常就是基于开发语言的连接器,以Java为例,是由mysql自己提供的mysql-connector-java的一个jar包(JDBC的实现),我们的应用程序通常就是通过这个连接器来与mysql进行连接。
在mysql内部与之进行连接的就是连接管理模块。当mysql整个系统初始化结束后,连接管理模块接手。连接管理模块启动处理客户端请求的监听程序(包括tcp/ip的网络监听,还有unix的socket)。当连接管理模块监听到客户端的连接请求,双方通过client&server交互协议模块所定义的协议进行连接(通常是tcp/ip),连接管理模块就会将连接请求转发给线程管理模块,去请求一个连接线程。
线程管理模块又回通知连接线程模块:有连接请求过来,需要建立连接。连接线程模块(这里我理解它就是mysql的线程组)接到连接请求后,首先会检查当前的线程池中是否有被缓存的空闲连接线程(mysql的线程组中不只有连接线程还有监听线程