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模块的启动
1、mysql提供了两种启动方式 start 和start_link
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