当前位置: 首页 > news >正文

MySQL体系结构:八大功能模块浅析

了解MySQL必须牢牢记住其体系结构图,MySQL是由SQL接口,解析器,优化器,缓存,存储引擎组成的:

 

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

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

  3 Connection Pool: 连接池。

  管理缓冲用户连接,线程处理等需要缓存的需求。

  4 SQL Interface: SQL接口。

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

  5 Parser: 解析器。

  SQL命令传递到解析器的时候会被解析器验证和解析。解析器是由Lex和YACC实现的,是一个很长的脚本。

  主要功能:

  a . 将SQL语句分解成数据结构,并将这个结构传递到后续步骤,以后SQL语句的传递和处理就是基于这个结构的。

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

  6 Optimizer: 查询优化器。

  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。

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

  InnoDB支持事务,并且提供行级的锁定,应用也相当广泛。

  MySQL也支持自己定制存储引擎,甚至一个库中不同的表使用不同的存储引擎,这些都是允许的。
 










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/773845,如需转载请自行联系原作者

相关文章:

  • 如何读取磁盘温度
  • 【FTP】FTP 命令模式下 PASV OR PORT
  • mysql如何保证redolog和binlog的一致性,安全性,效率。
  • C++连接mysql数据库的两种方法
  • 集成银联3.3.0
  • 群集笔记
  • 教徒计划出品:同一端口同时启用PEAP和MAC地址旁路(适用于IPPhone串接PC的网络环境)...
  • 百度的“框”正在移动
  • MySQL RESET MASTER与RESET SLAVE
  • Lua 面向对象
  • java socket通信-传输文件图片--传输图片
  • 为Unreal添加一个定时运行的功能模块
  • Swap in C C++ C# Java
  • php获取字符串长度的函数
  • Windows Server 2012的文件和存储服务之一
  • cookie和session
  • Docker容器管理
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • es6(二):字符串的扩展
  • Javascript Math对象和Date对象常用方法详解
  • JAVA并发编程--1.基础概念
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • unity如何实现一个固定宽度的orthagraphic相机
  • 阿里云购买磁盘后挂载
  • 二维平面内的碰撞检测【一】
  • 京东美团研发面经
  • 前端临床手札——文件上传
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 用element的upload组件实现多图片上传和压缩
  • Hibernate主键生成策略及选择
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​HTTP与HTTPS:网络通信的安全卫士
  • # 飞书APP集成平台-数字化落地
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (2)MFC+openGL单文档框架glFrame
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (C语言)逆序输出字符串
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (补)B+树一些思想
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (四)JPA - JQPL 实现增删改查
  • (小白学Java)Java简介和基本配置
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)kafka实战——kafka源码编译启动
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .NET 材料检测系统崩溃分析
  • .net 无限分类
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • @NestedConfigurationProperty 注解用法
  • [ 数据结构 - C++]红黑树RBTree
  • [android学习笔记]学习jni编程
  • [bzoj4010][HNOI2015]菜肴制作_贪心_拓扑排序
  • [C#]winform部署yolov5-onnx模型