01-mysql实例\mysqld进程结构详解
一、mysql客户端链接服务器
mysql提供了两种链接方式,一种是tcp/ip,一种是socket链接
1、tcp/ip
mysql -uroot -poldboy123 -h 10.0.0.200
# 通过指定ip和端口链接服务器,可远程链接,生产环境都是用tcp/ip
2、socket方式
mysql -uroot -p1 -S /tmp/mysql.sock
# -S 指定socket文件的位置,替代ip 和 端口, 但是只适用于本地连接,mysql回车登录成功,默认使用的是socket连接
# windows中没有这种socket文件链接的方式,只能用tcp/ip或管道连接,并且socket文件链接方式只适用于本地连接,
二、mysql服务器构成-实例
""" mysqld是一个数据库的管理程序,kkk.ibd是一个数据库文件 我们如果要通过数据库管理程序操作数据库文件,就要把mysqld 运行起来,加载到内存中,kkk文件也要加载到内存,然后由mysqld 处理文件,处理完后,再将ibd文件重新写回磁盘, mysqld是守护进程,不退出 """
那到底mysql实例是什么
mysql在启动过程
- 启动后台守护进程,并生成工作线程
- 预分配内存结构供MySQL处理数据使用
实例
- MySQL的后台进程+线程+预分配的内存结构
1、工作过程
例:
select user,host,password from mysql.user;
连接层功能:
1、提供通信协议
TCP/IP
socket
2、用户验证
用户的合法性:用户名、密码 --------》mysql.user
3、master thread
链接成功thread分配一个专用线程(Thread)接收后续的用户请求(查询),但并没有能力直接处理SQL,转给SQL层继续处理
SQL层
1、接收上传转发过来的SQL
2、语法检查
3、语义检查(检查是什么类型的SQL),以Select为例,检查到是一个DQL,交给查询类专用的解析器,权限验证,验证当前用户是否有执行查询的权限
4、解析器将SQL解析成SQL接口能够识别方式(执行计划explain),解析完成后,交给优化器进行优化
5、优化器,做判断,选择一个它认为成本最低的执行计划,交给执行器
6、执行器执行explain,生成执行结果(去将数据文件的第N个数据页把我需要的数据取出来)
7、把执行结果交给下层(存储引擎层)继续处理
8、查询缓存
存储引擎层
1、接收上层的执行结果
2、取出磁盘文件的相应数据(十六进制\二进制)
3、返回给SQL层,结构化之后(生成表格,人能看懂的),由专用线程thread返回给客户端
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现