MySQL 体系架构

本篇文章是对mysql体系结构进行了详细的分析介绍,需要的朋友参考下

上面一图是mysql的概览图,我们从上往下看, 我们把上面一图一分为二,我们可以吧它分为两个部分,

  1,是connectors 的部分,即客户端部分

  2,是大块的mysql server

把它个个部件拆开来看我们一个个来解析

1. connectors

  指的就是mysql的客户端,

1. Management Serveices & Utilities:

  这是mysql 的系统管理和控制工具,如bin 目录下的mysql,mysqldump,cluster 之类的东西

2. Connction pool

  管理缓冲用户连接 ,线程处理等需要缓存的需求,他提供如下用能,

  1. authentication 验证机制,验证用户名,密码,Ip,权限
  2. Thread Reuse 分配线程.
  3. Connection Limits 链接限制(池子大小);
  4. Check Memory 检查连接池内存空间大小,如用了多少还剩多少,有多少个连接正在运行之类的检查
  5. caches 缓存池

4. SQL Interface: SQL接口。

  接受用户的SQL命令,并且返回用户需要查询的结果。假如用户只需的是标准的SQL的话那必然会经过这一步,

  它会对我们的命令 如 DML,DDL,Stored Procedure,Views,Triggers,etc  分解成一个个基本元素(也叫令牌,令牌环),然后把这些基本元素放到一个数据结构里面

5. Parser: 解析器。

  1. Query Transactional 查询事物
  2. Object Privilege 权限认证

  

6. Optimizer: 查询优化器。

  我们队mysql进行优化有很大一部分是在这里进行 ,它这里做的无非就是对SQL进行优化,得到最佳的执行计划 ,

  在这个里面呢它会确认我们的

  1. access paths连接通道,
  2. statistics 采集我们的统计信息

  -- 而得到最佳的执行计划

  SQL语句在查询之前会使用查询优化器对查询进行优化。他使用的是“选取-投影-联接”策略进行查询。

用一个例子就可以理解: select uid,name from user where gender = 1;

这个select 查询先根据where 语句进行选取,而不是先将表全部查询出来以后再进行gender过滤

这个select查询先根据uid和name进行属性投影,而不是将属性全部取出以后再进行过滤

将这两个查询条件联接起来生成最终查询结果

7. Cache和Buffer: 查询缓存。

  如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。

  这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key缓存,权限缓存等

8. Engine :存储引擎。

  存储引擎是MySql中具体的与文件打交道的子系统。也是Mysql最具有特色的一个地方。

  Mysql的存储引擎是插件式的。它根据MySql AB公司提供的文件访问层的一个抽象接口来定制一种文件访问机制(这种访问机制就叫存储引擎)

  现在有很多种存储引擎,各个存储引擎的优势各不一样,最常用的MyISAM,InnoDB,BDB

  如:

  MyISAM引擎,它查询速度快,有较好的索引优化和数据压缩技术。但是它不支持事务。

  InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。 
  Mysql也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。

9. 文件系统和日志系统

  

MySQL 体系架构的更多相关文章

  1. MySQL体系架构

    MySQL体系架构 学习一门数据库系统首先得了解它的架构,明白它的架构原理对于后期的分析问题和性能调优都有很大的帮助,接下来就通过分析架构图来认识它. 数据库:物理操作系统文件或者其它文件的集合,在m ...

  2. 一文搞懂MySQL体系架构!!

    写在前面 很多小伙伴工作很长时间了,对于MySQL的掌握程度却仅仅停留在表面的CRUD,对于MySQL深层次的原理和技术知识了解的少之又少,随着工作年限的不断增长,职场竞争力却是不断降低的.很多时候, ...

  3. MySQL InnoDB存储引擎体系架构 —— 索引高级

    转载地址:https://mp.weixin.qq.com/s/HNnzAgUtBoDhhJpsA0fjKQ 世界上只两件东西能震撼人们的心灵:一件是我们心中崇高的道德标准:另一件是我们头顶上灿烂的星 ...

  4. MySQL架构原理之体系架构

    MySQL是最流行的关系型数据库软件之一,由于其体量小.速度快.开源免费.简单易用.维护成本低等,在季军架构中易于扩展.高可用等优势,深受开发者和企业的欢迎,在互联网行业广泛使用. 其系统架构如下: ...

  5. Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview

    Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview   知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ...

  6. 2.3 InnoDB 体系架构

    下图简单显示了InnoDB的存储引擎的体系架构,从图可见,InnoDB储存引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负责如下工作: 维护所有进程/线程需要访问的多个内部数据结构 缓存磁 ...

  7. 面向服务的体系架构(SOA)

    面向服务的体系架构(SOA) 1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概 ...

  8. InnoDB引擎体系架构

    InnoDB引擎架构介绍 innodb存储引擎的体系架构,可简单划分成三层: 数据文件 :磁盘上的数据文件 内存池:缓存磁盘上的数据,方便读取,同时在对磁盘文件数据修改之前在这里缓存,然后按一定规刷新 ...

  9. InnoDB体系架构(二)内存

    InnoDB体系架构(二)内存 上篇文章 InnoDB体系架构(一)后台线程 介绍了MySQL InnoDB存储引擎后台线程:Master Thread.IO Thread.Purge Thread. ...

随机推荐

  1. CAS Ticket SSO 登录流程图

  2. windows下mysql增量备份与全备份批处理

    win下的全备批处理 批处理用于游戏服务器,经过严格测试,且正式使用,主要用来完全备份数据库,当然.这只是将数备份出来 ,至于如何将备份出来的数据远程传送的远程服务器上可以调用ftp的功能,此脚本并未 ...

  3. SDWebImage缓存清理

    //计算缓存大小 [SDImageCache sharedImageCache] getSize] //清理缓存 SDImageCache *sd = [[SDImageCache alloc]ini ...

  4. 【学习笔记】【C语言】char类型

    1. 存储细节 ASCII单字节表(双字节GBK\GB2312\GB18030\Unicode) 2. 常见错误 char c = A; char c = "A"; char c ...

  5. 用NOPI将图片二进制流导出到Excel

    这儿采取的是将图片的二进制流导出到Excel,直接上代码: /// <summary> /// DataTable导出到Excel的MemoryStream /// </summar ...

  6. CSS Sprite 雪碧图制作

    CSS Sprite 雪碧图,简单来说就是: 为了提高网页的性能,减少加载次数,将一些不会经常随网站内容变化的小图标,集中放在一张大图上,将该图应作为background-image 嵌入页面中,在需 ...

  7. 华丽的HTML5/jQuery动画和应用 前端必备

    在网页应用中,我们经常会使用jQuery来实现一些简单的动画效果,比如菜单下拉时的渐变特效,图片滑动时的淡入淡出效果等.现在我们将jQuery和HTML5互相结合,让HTML5/CSS3强大的页面渲染 ...

  8. IEEE 802.15.4协议学习之物理层

    在详细讲述IEEE 802.15.4协议之前,谈谈自己这两个星期看协议过程中的一点心得,或者是收获吧. 看协议文档,一定要看有书签的,边看边在旁边做些备注,以便于后期整理.对于协议层次相关的,最好在纸 ...

  9. MySQL数据库下用户及用户权限配置

    问题:使用某大腿写的远程工具管理Mysql数据库时发现所有数据能正常显示,但是无法进行删除.修改等操作. 思路:可以远程读取到数据库里的信息,说明当前主机可以远程连接数据库.却无法进行删除.修改这些操 ...

  10. MongoDB的分组统计 group

    mongodb中的分组聚合用$group,而且处理的最大数据量为100M如果超出需要写入到磁盘,使用格式如下: { $group: { _id: <expression>, <fie ...