erlang_mysql_driver 源码分析1

本文深入分析erlang_mysql_driver的源码,涵盖启动过程、mysql_conn进程创建、连接池管理和dispacher调度策略。详细讨论了启动方式、连接添加、conn_pools的维护及sql执行流程,揭示了数据库驱动如何高效处理SQL请求。
摘要由CSDN通过智能技术生成

erlang_mysql_driver 是个mysql的数据库驱动
源码主要包含 mysql mysql_conn mysql_recv mysql_auth 这几个模块
mysql模块提供给外部调用的接口,包括启动、添加连接、执行sql语句。
mysql模块的另一主要功能是维护mysql_conn连接池,在执行sql语句时,选择合适的mysql_conn进程进行sql处理。
mysql_conn 和 mysql_recv 负责具体的sql执行逻辑和获取返回结果。

一、mysql模块的启动

start1(PoolId, Host, Port, User, Password, Database, LogFun, Encoding,
       StartFunc) ->
    crypto:start(),
    gen_server:StartFunc(
      {local, ?SERVER}, ?MODULE,
      [PoolId, Host, Port, User, Password, Database, LogFun, Encoding], []).

我们可以看上面代码,通过传入StartFunc值的不同(start_link或start),最终分别调用gen_server:start和gen_server:start_link

关于gen_server:start和gen_server:start_link的异同,我们可以查看官方文档:
gen_server:start启动一个独立的gen_server进程:
Creates a stand-alone gen_server process, i.e. a gen_server which is not part of a supervision tree and thus has no supervisor.

gen_server:start_link在监督树下启动一个gen_server进程:
Creates a gen_server process as part of a supervision tree. The function should be called, directly or indirectly, by the supervisor. It will, among other things, ensure that the gen_server is linked to 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值