首页 > 数据库技术 > 详细

emysql 驱动分析

时间:2014-03-08 08:06:35      阅读:638      评论:0      收藏:0      [点我收藏+]

本分主要分析emysql 驱动与mysql 通信过程,解底层机制。然后高效使用emysql 提高数据库存取效率

一、源码下载github https://github.com/Eonblast/Emysql

app 入口启动了一个监督进程 和两个服务进程

1
2
3
4
5
6
7
8
start_link() ->
    supervisor:start_link({local, ?MODULE}, ?MODULE, []).
 
init(_) ->
    {ok, {{one_for_one, 10, 10}, [
        {emysql_statements, {emysql_statements, start_link, []}, permanent, 5000, worker, [emysql_statements]},
        {emysql_conn_mgr, {emysql_conn_mgr, start_link, []}, permanent, 5000, worker, [emysql_conn_mgr]}
    ]}}.

增加配置数据库连接的入口  

bubuko.com,布布扣

 open_connections启动socket 执行身份确认

bubuko.com,布布扣

 

bubuko.com,布布扣

tcp协议连接mysql 服务器

bubuko.com,布布扣

连上服务器后 服务器会发一些信息 进行握手身份确认 握手成功后就是正常处理sql语句了

bubuko.com,布布扣

下面的recv 都是接收数据包的一些协议 mysql 驱动与mysql server通信的协议解析

bubuko.com,布布扣

下面的recv_packet 有两个部分 有个头部和body 这个就是与协议有关了 看header

bubuko.com,布布扣

循环接收数据 这里有点技巧头部难道是32个字节 mark 下想研究的去看mysql

协议通信

bubuko.com,布布扣

头部接收完了就是 消息体部分了暂时不关心

bubuko.com,布布扣

等下面的握手成功后 下面就直接是sql 语句了

set_database 选择数据库

set_encoding set names 编码

give_manager_control 绑定sock 到下面的gen_server

1
2
-module(emysql_conn_mgr).
-behaviour(gen_server).

  

bubuko.com,布布扣

往回走到

bubuko.com,布布扣

跳到emysql_conn_mgr 模块 该服务由监督进程启动 启动app时就已经启动了 是一个one_for_one策略

增加一个连接进连接池

bubuko.com,布布扣

今晚到这晚安 

photo 蓝天白云雪山 自由自在

bubuko.com,布布扣

 

1
<em id="__mceDel"> </em>

emysql 驱动分析,布布扣,bubuko.com

emysql 驱动分析

原文:http://www.cnblogs.com/glutshow/p/3587474.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!