emysql代码解析
emysql 是以前常用的mysql驱动,目前最后一次更新时间是2014年,在本身设计上有一些缺陷,以及最新OTP版本会有少许报错,故不推荐使用。
项目结构:
1.emysql_conn_mgr中存储了各个连接池,每个连接池有一个pool_id,连接池中有若干个连接
当我们执行一条sql语句时,会call到emysql_conn_mgr中
2.所有pool的信息都存在emysql_conn_mgr的state中
首先会先找根据pool_id找到pool,再看看pool中又没有空余的连接
有连接会直接返回,如果没有连接,会加入waiting队列中
当有连接释放出来时,会通知waiting队列中等待的进程
此时要是上图的receive超时了,就会abort_wait,从等待队列中移除
3.连接的数量可以手动增加或减少
increment_pool_size
decrement_pool_size
4.缺陷
连接数量无法动态调整,不能根据实时并发数量动态调整
开启连接的时候没有另外启动进程处理,可能会阻塞add_pool的逻辑进程
poolboy_mysql则解决了这些问题
浙公网安备 33010602011771号