mysql 整体架构
mysql 一共分为四层,分别是网络层、服务层、存储引擎层、文件系统层,客户端 不属于 mysql_server 的范畴,它可以是各种变成语言,也可以是各种可视化工具,即一切能和 MySQLl server 连接成功的模块都为 “客户端”。
一、网络层。
-
mysql 使用 tcp/ip 来进行网络链接 理论上所有能访问 tcp/ip 的编程语言都可以与它进行连接
-
mysql 还支持使用 socket 进行连接 一般使用较少
连接流程
clientserver发起tcp请求 三次握手建立session 连接查询用户 鉴权鉴权成功 授权连接建立成功clientserver
连接之后
mysql 会安排一条线程维护当前的客户端连接,这条线程表示这当前连接正在进行什么工作 可以通过 show processlist 来查看当前正在运行的所有线程 默认已半双工的通讯机制进行工作,此外还有全双工和单工机制
-
Id:当前线程的 ID 值,可以利用这个 ID,使用 kill 强杀线程。
-
User:当前线程维护的数据库连接,与之对应的用户是谁。
-
Host:与当前线程保持连接关系的客户端地址(IP+Port)。
-
db:目前线程在哪个数据库中执行 SQL。
-
Command:当前线程正在执行的 SQL 类型,如: Create DB:正在执行创建数据库的操作。 Drop DB:正在执行删除数据库的操作。 Execute:正在执行预编译的 SQL(PreparedStateme