mysql内部由什么构成_MySQL服务的构成(二)

一、什么是实例

这里的实例不是类产生的实例对象,而是Linux系统下的一种机制

1.MySQL的后台进程+线程+预分配的内存结构。

2.MySQL在启动的过程中会启动后台守护进程,并生成工作线程,预分配内存结构供MySQL处理数据使用

二、MySQL三层构成

d8ee39590962f300c058e5d9b87d90b3.png

2.1 连接层

提供链接协议(socket,tcp/ip) #这里的socket也不是网络连接的socket,mysql的socket连接只能连接本地

验证用户的合法性(用户名,密码,白名单)

提供一个专用连接线程(接收sql,返回结果,将sql语句交给sql层继续处理)

2.2 SQL层

接收到sql语句(判断语法、判断语义、判断语句类型[DML、DDL、DCL、DQL])

数据库对象授权检查

解析SQL语句,生成多种执行计划,MySQL没法直接执行SQL语句,必须解析成执行计划,运行执行计划,最终生成如何去磁盘找数据的方式

优化器,选择它认为成本最低的执行计划

执行器,根据优化器的选,按照优化器建议执行sql语句,得到去哪儿找sql语句需要访问的数据:A、具体在哪个数据文件上的哪个数据页中 B、将以上结果充送给下层继续处理

接收存储引擎层的数据,结构化成表的形式,通过连接层提供的专用线程,将表数据返回给用户

提供查询缓存,缓存之前查询的数据,假如查询的表是一个经常变动的表,查询缓存不要设置太大, query_cache使用memcached或Redis代替

日志记录(binlog)

ac52ddc0052c57cb95be42b1a7b88883.png

2.3 存储引擎层

接收上层的执行结果

取出磁盘文件和相应数据

返回给sql层,结构化之后生成表格,由专用线程返回给客户端

存储引擎用于:

存储数据(将SQL语句做的修改转储到磁盘上)

检索数据(把存进去的数据在提取出来)

双层处理 :

上层包括SQL解析器和优化器

下层包含一组储存引擎

SQL层不依赖于存储引擎:

引擎不影响SQL处理

也有一些例外的情况

依赖于存储引擎的功能:

存储介质

事物功能

锁定

备份和恢复

优化

特殊功能全文检索

引用完整性

空间数据处理

接收到sql语句,语法判断

判断语义(判断语句类型:DML,DDL,DCL,DQL)

解析SQL语句,生成多种执行计划

优化器,选择它认为成本最低的执行计划(通俗讲就是选择速度快,消耗低的sql语句类型)

执行器根据优化器的选择,按照优化器建议执行sql语句,得到去哪儿找sql语句需要访问的数据

1.具体:在哪个数据文件上的哪个数据页中

2.将以上结果充送给下层继续处理

接收存储引擎层的数据,结构化成表的形式,通过连接层提供的专用线程

提供查询缓存

1.query_cache使用memcached或Redis代替

日志记录(binlog)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值