欢迎来到 Kong Xiangqun 的博客

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返回给客户端

 

posted @ 2020-10-01 14:59  kongxiangqun20220317  阅读(598)  评论(0编辑  收藏  举报