一、逻辑架构

MySQL也采用分层架构。插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存取相分离,这样就可以根据业务需求来选择适合的存储引擎。

1、层次结构

连接层 —— 业务逻辑处理层(处理sql)—— 数据存储引擎 —— 硬盘

(1)连接层

是一些客户端和连接服务,主要完成类似于连接处理、授权认证、及相关的安全方案。该层引入了连接池的概念,为通过认证安全接入的客户端提供线程。该层还可实现基于SSL的安全链接。

(2)服务层

在处理底层数据前,在这一层对SQL进行分析、优化及执行内置函数,会确定查询表的顺序和是否利用索引等,最后生成相应的执行操作。在解析查询之前,要查询缓存,这个缓存只能保存查询信息以及结果数据,如果请求一个查询在缓存中存在,就不需要解析,优化和执行查询了,直接返回缓存中所存放的这个查询的结果。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视图等。

(3)引擎层

存储引擎真正的负责了Mysql中数据的存储和提取,服务器通过存储引擎API与存储引擎交互,API包含了很多底层操作,如开始一个事务,或者取出有特定主键的行。存储引擎不能解析SQL,互相之间也不能通信,仅仅是简单的响应服务器的请求。

(4)存储层

主要将数据存储在运行于裸设备的文件系统之上,并完成与存储引擎的交互。

2、逻辑模块

(1)Connectors:指的是不同语言中与SQL的交互。

(2)Management Serveices & Utilities:系统管理和控制工具。

(3)Connection Pool:连接池

管理缓冲用户连接,线程处理等需要缓存的需求。负责监听对 MySQL Server 的各种请求,接收连接请求,转发所有连接请求到线程管理模块。每一个连接上 MySQL Server 的客户端请求都会被分配(或创建)一个连接线程为其单独服务。而连接线程的主要工作就是负责 MySQL Server 与客户端的通信,接受客户端的命令请求,传递 Server 端的结果信息等。线程管理模块则负责管理维护这些连接线程。包括线程的创建,线程的 cache 等。

(4)SQL Interface: SQL接口。

接受用户的SQL命令,并且返回用户需要查询的结果。比如select from就是调用SQL Interface。

(5)Parser: 解析器。

SQL命令传递到解析器的时候会被解析器验证和解析。在 MySQL中我们习惯将所有 Client 端发送给 Server 端的命令都称为 query 。

主要功能:

a . 将SQL语句进行语义和语法的分析,分解成数据结构,然后按照不同的操作类型进行分类,然后做出针对性的转发到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。

b.  如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的。

(6)Optimizer:查询优化器。

SQL语句在查询之前会使用查询优化器对查询进行优化,得出一个最优的策略,告诉后面的程序如何取得这个 query 语句的结果,他使用的是“选取-投影-联接”策略进行查询。

(7)Cache和Buffer: 查询缓存。

将客户端提交给MySQL的Select类query请求的返回结果集cache到内存中,与该query的一个hash值做一个对应。该Query 所取数据的基表发生任何数据的变化之后,MySQL会自动使该query的Cache失效。在读写比例非常高的应用系统中,Query Cache对性能的提高是非常显著的。当然它对内存的消耗也是非常大的。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等。

(8) 存储引擎接口

插件式管理,目前各种数据库产品中,基本上只有 MySQL 可以实现其底层数据存储引擎的插件式管理,这个模块实际上只是 一个抽象类。默认下MySql是使用MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术,但是它不支持事务,InnoDB支持事务,并且提供行级锁,应用也相当广泛,Mysql也支持自己定制存储引擎。

注意:存储引擎是基于表的,而不是数据库,甚至一个库中不同的表使用不同的存储引擎。

二、存储引擎

查看默认和当前的存储引擎:show variables like '%storage_engine%;

MyISAM和InnoDB比较

mysql最大述_MySQL优化(1):Mysql简述相关推荐

  1. mysql最大述_mysql最大字段数量及 varchar类型总结

    mysql最大字段数 一直对mysql最大字段数不明确有人说是1024 还有人说 Max columns per row 4096 InnoDB is limited to 1000columns 实 ...

  2. mysql 交换空间_MySQL优化纪录

    优化纪录 20200304第一次 新的ECS型号如下 2 vCPU 4 GiB (I/O优化) ecs.n4.large 3Mbps 弄这个ECS纯属是个人的爱好,折腾一下代码,网站的访问量也不大,所 ...

  3. mysql数据库启动_MySQL数据库之Mysql启动的方式(四种)

    本文主要向大家介绍了MySQL数据库之Mysql启动的方式(四种) ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 废话不多说了,直奔主题了. mysql的四种启动方式: 1.m ...

  4. mysql longblob 读取_MySQL数据库之Mysql的longblob字段插入数据问题解决

    本文主要向大家介绍了MySQL数据库之Mysql的longblob字段插入数据问题解决 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 在使用mysql的过程中,有个问题就是my ...

  5. mysql基础搭建_MySql基础-构建MySql数据库:安装MySql-server、MySql-client

    1 构建MySQL服务器 1.1 问题 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 ...

  6. mysql二进制方式_MySQL数据库之MySql二进制连接方式详解

    本文主要向大家介绍了MySQL数据库之MySql二进制连接方式详解 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 使用mysql二进制方式连接 您可以使用MySQL二进制方式进 ...

  7. elastic如何和mysql同步数据_MySQL数据库之mysql 同步数据到 ElasticSearch 的方案

    本文主要向大家介绍了MySQL数据库之mysql 同步数据到 ElasticSearch 的方案 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. MySQL Binlog 要通过 ...

  8. mysql limit 菜鸟_MySQL之二---MySQL菜鸟入门“秘籍”

    一.MySQL简介 1.什么是数据库 ? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不 ...

  9. 优化mysql服务器硬件包括_MySQL优化之一:服务器硬件和操作系统

    1 服务器硬件优化 在挑选数据库服务器时,可以从以下几个方面考虑: 1)CPU:建议采用高性能的服务器,如DELL R7.R8或R9系列的服务器. 2)磁盘:数据库服务器最大的制约在于磁盘I/O,如果 ...

最新文章

  1. linux shell 错误 [: =: unary operator expected 解决办法
  2. python字典相同key的值怎么分别取出_python字典值排序并取出前n个key值的方法
  3. 【自动驾驶】摄像头单目测距原理及实现
  4. 反病毒引擎设计全解(四)
  5. Java递归实现二分法
  6. linux接收手机信号,接收关联设备的信号强度在Linux接入点
  7. w3c java_无法从W3C加载Java类
  8. DT-06 For MQTT
  9. bzoj5090[lydsy11月赛]组题
  10. 计算机测试怎么提交,Win7电脑怎么测试上传速度?
  11. 【vue2.0进阶篇】用transition组件轻松实现过渡效果
  12. 关于tensorflow2.0的弊端
  13. 根据class显示或隐藏多个div
  14. 题目1555:重复子串
  15. ubuntu18.04 ros-melodic 中科大的ROS教程gazebo打开没有地图与环境,只有地板
  16. 首席新媒体运营商学院创始人黎想:给新媒体运营的7点建议
  17. Cirium分析:航空公司和机场重返准点率竞赛
  18. 手把手教程 | 使用 NICE DCV 在 G4 实例上运行 Android 应用程序
  19. html5用语义元素做旅游网站,HTML5语义元素
  20. 计算机考研838难吗,838初试经验教训分享

热门文章

  1. B站就机房服务器故障道歉;罗永浩否认将启动自动驾驶项目;​亚马逊收购 Facebook 卫星互联网团队|极客头条...
  2. 不是吧?!程序员月入10w,原因竟然是这个......
  3. 前端大神:如何看待 React Server Components?
  4. Kubernetes 弃用 Docker !
  5. TIOBE 5 月榜单:时隔五年,C 语言重返第一!
  6. 你技术很强但薪资不涨?这门技术远比你想的更重要!
  7. 推荐系统如何一键实现工业级部署? ElasticCTR 百度开讲
  8. 开发者应当熟知的 C# 序列化和反序列化
  9. AI 技术争鸣!2019 AI 开发者大会盛大开幕
  10. 观点 PK | 商用 PC or 消费 PC,开发者究竟该如何取舍?