前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL架构设计

MySQL架构设计

作者头像
用户4283147
发布2022-10-27 10:38:31
4210
发布2022-10-27 10:38:31
举报
文章被收录于专栏:对线JAVA面试

为何称MySQL为黑盒?

对于大部分的开发人员而言,编写增删查改的sql语句通过数据库连接去操作数据库,但并不关心数据库是如何监听请求和从连接中把请求数据中提取出来,往往在意表结构,sql执行效率慢就给他们建立索引,完全把MySQL当作黑盒子去使用。

1. 网络连接必须使用线程来处理

MySQL 使用内部线程来实现监听和读取请求。

2. SQL接口:负责处理接收到的sql语句

MySQL通过sql接口把我们平时编写的sql语句简单化,让我们轻松的学会和编写sql语句,但其底层实现其实是非常复杂。当工作线程接收到sql语句之后,会交给sql接口去执行。

3. 查询解释器:让MySQL看懂sql语句

MySQL是一个数据管理系统,并不能像我们一样直接读懂sql语句,例如:

代码语言:javascript
复制
select id, name, age from users where id = 

需要借助组件 查询解析器 对sql语句进行解析和拆解,拆解成以下几部分:

  1. from users: 我们需要从 users 表里面查询数据
  2. where id = 1 :查询id字段值为1的那行数据
  3. select id, name, age : 从查出来的那行数据中提取出 "id,name,age"三个字段
4. 查询优化器:选择最优的查询路径

查询优化器会根据sql生成查询路径树,然后从里面选择一条最优的查询路径出来。

5. 调用存储引擎接口,真正执行sql语句

数据库存储的数据,有可能存储在磁盘上,有可能存储在内存中。那怎么判别查询的数据存放在哪一个地方?存储引擎根据执行器的调度执行sql逻辑,无论是从内存缓存中查询数据,从磁盘中更新数据,一系列操作全都由存储引擎执行。

6. 执行器:根据执行计划调度存储引擎

执行器根据优化器的执行计划去调用存储引擎的各种接口来完成sql语句的执行。

总结:

在MySQL架构设计中,SQL接口、SQL解析器、查询优化器、执行器都是一套通用的组件,但是存储引擎却有不同的选择,例如:InnoDB、MyISAM、Memory等,对应不同的应用场景,MySQL的默认是 InnoDB,在后续会一步一步分析。所以综上所述,MySQL的执行sql语句的顺序为:sql接口->解析器:解释sql->优化器:生成执行计划->执行器:执行计划去调用InnoDB存储引擎接口执行sql。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 对线JAVA面试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为何称MySQL为黑盒?
    • 1. 网络连接必须使用线程来处理
      • 2. SQL接口:负责处理接收到的sql语句
        • 3. 查询解释器:让MySQL看懂sql语句
          • 4. 查询优化器:选择最优的查询路径
            • 5. 调用存储引擎接口,真正执行sql语句
              • 6. 执行器:根据执行计划调度存储引擎
              • 总结:
              相关产品与服务
              云数据库 MySQL
              腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档