#会话管理
YashanDB会话管理在分布式环境下需要协调各节点间的会话资源,用以隔离用户对于DN上相关会话资源管理。主要在于会话管理采用线程池的方式处理来自客户端连接的任务,并且同时限制任务实际在数据库系统中的并发数量,以供数据库更加高效的运行。
# 配置参数
MAX_REACTOR_CHANNELS表示负责监听处于等待状态的网络连接的后台线程,MAX_REACTOR_CHANNELS = 0表示不启用REACTOR模式,每个客户端连接分配独立线程处理进行处理,MAX_REACTOR_CHANNELS >= 1表示启用REACTOR模式,客户端连接采用共享线程池处理,共享线程池线程数量请参考参数MAX_WORKERS。当并发量较大时,建议适当调大MAX_REACTOR_CHANNELS。
MAX_REACTOR_CHANNELS在分布式部署中的默认安装值为1,若MAX_WORKERS >= MAX_SESSIONS,对应的共享线程池线程数量MAX_WORKERS的值取两者中较小的值。
MAX_REACTOR_CHANNELS在单机、集群部署中的默认安装值为0,若MAX_WORKERS >= MAX_SESSIONS,即使配置了该参数>=1,也不会起作用。
MAX_SESSIONS表示最大可申请的会话数,包含一定数量的后台会话,要求单个MN,DN上的配置=各个CN上配置之和。
MAX_WORKERS表示线程池的数量,即实际数据库中并行的最大任务数,要求单个MN,DN上的配置=各个CN上配置之和。
Note:
注意:处于事务中的客户端请求会一直占用共享线程,若超过共享线程数量的事务不提交,会阻塞其他连接的任务处理,若发生类似情况,请使用保留连接进行应急处理。
示例
show parameter MAX_REACTOR_CHANNELS;
show parameter MAX_SESSIONS;
show parameter MAX_WORKERS;
# 相关视图
DV$SESSION包含分布式各个节点上会话的相关信息,可通过GLOBAL_SESSION_ID字段建立各个节点间会话之间的联系。
DV$DATA_CONNECTION包含各个CN上会话的相关信息,主要是CN和各个已建立连接的节点之间的关系。
示例(分布式部署)
SELECT * FROM DV$SESSION;
SELECT * FROM DV$DATA_CONNECTION;