
# 技术原理
#### 核心机制
打开建连线程池功能后，建连流程会发生变化，GaussDB收到建连事件时，会将任务派发到建连线程池中，由该线程池中的worker线程绑定到此连接对应的session执行初始化，初始化完成后，继续执行建连阶段的sql语句，建连结束后，将session派发到业务线程池中执行后续业务，详细流程如下：
1. 客户端（gsql或jdbc等）触发建连操作。
2. GaussDB收到建连请求，创建session，派发session到建连线程池中。
3. 建连线程池获取一条空闲ConnTPLWorker线程绑定session执行建连初始化，包括鉴权、首包处理等。
4. 连接初始化完成后，由ConnTPLWorker线程继续执行建连阶段的sql语句。
5. 建连结束后，由ConnTPLWorker线程将session派发至业务线程池中等待下一次任务。
6. 业务线程池获取一条空闲TPLWorker线程绑定session执行后续sql业务并返回执行结果。
 
#### 关键接口
建连线程池主要使用以下GUC参数，具体描述请参见《参考》中"数据库运行参数说明 \> GUC参数说明 \> 线程池"章节。
表1GUC参数 
| 参数名                        | 参数说明                      |
|:---|:---|
| enable_thread_pool         | 控制线程池是否打开的开关，默认为on。       |
| enable_connect_thread_pool | 控制建连线程池是否打开的开关，默认为on。     |
| connect_thread_pool_attr   | 控制建连线程池的初始配置参数，默认为'auto'。 |
   
