MySQL:网络连接框架简析

MySQL:网络连接框架简析,第1张

一直对这部分不太了解,稍微看了一下,但由于知识储备有限,错误在所难免。

总的看起来MySQL在这部分依旧使用了常规的 reactor+线程池 高并发网络模型,这里我们以poll为列,有如下特点:

貌似看起来大佬的手法都是通用的,都是按照一定模式写出来的。当然实际上涉及的东西还是非常多,但是这里我们仅仅了解网络框架部分,对于线程池\vio通信模块\net协议模块不做讨论,因为我也不了解,这里主要看看网络框架。

对于用户会话线程通常叫做thread_one_connection,接着会调用thd_prepare_connection->login_connection将准备对连接fd进行ppoll的超时参数设置为connect_timeout指定的值,也就是言外之意connect_timeout是在处理连接请求的时候生效的参数。

然后thd_prepare_connection->login_connection->check_connection,在函数check_connection中完成主要任务是:

在login_connection的末尾会将连接fd的ppoll的timeout参数设置为read_timeout/write_timeout。

最后接下来就是进行命令处理的环节了。也就是do_command。通常我们的会话就堵塞在这里等待客户端命令的到来如下:

写个数据库连接工具类:

public MySqlDataReader GetData()

{string connection = "server=localhostuser id=rootpassword=123456database=ABCpooling=true"

MySqlConnection conn = new MySqlConnection(connection) string sqlQuery = "SELECT * FROM Article"

MySqlCommand comm = new MySqlCommand(sqlQuery, conn)

conn.Open()

MySqlDataReader dr = comm.ExecuteReader()

conn.Close() return dr

}

mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。

mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7109164.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-01
下一篇 2023-04-01

发表评论

登录后才能评论

评论列表(0条)

保存