下面是关于上述部件的介绍:

  1. connectors

    与其他编程语言中的sql 语句进行交互,如php、java等。

  2. Management Serveices & Utilities

系统管理和控制工具

  1. Connection Pool (连接池)

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

  1. SQL Interface (SQL接口)

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

  1. Parser (解析器)

SQL命令传递到解析器的时候会被解析器验证和解析。

主要功能:

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

b. 如果在分解构成中遇到错误,那么就说明这个sql语句是不合理的,语句将不会继续执行下去

  1. Optimizer (查询优化器)

SQL语句在查询之前会使用查询优化器对查询进行优化(产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果) 他使用的是“选取-投影-联接”策略进行查询。

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

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

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

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

  1. Cache和Buffer (查询缓存)

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

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

8.Engine (存储引擎)

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

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

-+-----------------------------------------------------------------------------------+-

SQL 语句执行过程

数据库通常不会被直接使用,而是由其他编程语言通过SQL语句调用mysql,由mysql处理并返回执行结果。那么Mysql接受到SQL语句后,又是如何处理的呢?

首先程序的请求会通过mysql的connectors与其进行交互,请求到处后,会暂时存放在连接池(connection pool)中并由处理器(Management Serveices & Utilities)管理。当该请求从等待队列进入到处理队列,管理器会将该请求丢给SQL接口(SQL Interface)。SQL接口接收到请求后,它会将请求进行hash处理并与缓存中的结果进行对比,如果完全匹配则通过缓存直接返回处理结果;否则,需要完整的走一趟流程:

(1)由SQL接口丢给后面的解释器(Parser),上面已经说到,解释器会判断SQL语句正确与否,若正确则将其转化为数据结构。

(2)解释器处理完,便来到后面的优化器(Optimizer),它会产生多种执行计划,最终数据库会选择最优化的方案去执行,尽快返会结果。

(3)确定最优执行计划后,SQL语句此时便可以交由存储引擎(Engine)处理,存储引擎将会到后端的存储设备中取得相应的数据,并原路返回给程序。

这里有几点需要注意:

(1)如何缓存查询数据?

存储引擎处理完数据,并将其返回给程序的同时,它还会将一份数据保留在缓存中,以便更快速的处理下一次相同的请求。具体情况是,mysql会将查询的语句、执行结果等进行hash,并保留在cache中,等待下次查询。

(2)buffer与cache的区别?

从上面的图可以看到,缓存那里实际上有buffer和cache两个,那它们之间是否有什么不同呢?简单的说就是,buffer是写缓存,cache是读缓存。

(3)如何判断缓存中是否已缓存需要的数据

这里可能有一个误区,觉得处理SQL语句的时候,为了判断是否已缓存查询结果,会将整个流程走一遍,取得执行结果后再与需要的进行对比,看看是否命中,并以此说,既然不管缓存中有没有缓存到查询内容,都要整个流程走一遍,那么缓存的优势又在哪里??

实际上,并非如此,在第一次查询后,mysql便将查询语句以及查询结果进行hash处理并保留在缓存中,SQL查询到达之后,对其进行同样的hash处理后,将两个hash值进行对照,如果一样,则命中,从缓存中返回查询结果;否则,需要整个流程走一遍。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69937474/viewspace-2651989/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69937474/viewspace-2651989/

MySQL运行原理与基础架构相关推荐

  1. Serverless 实战 —— Serverless 的运行原理与组件架构

    Serverless 的运行原理与组件架构 本文重点探讨下开发者使用 Serverless 时经常遇到的一些问题,以及如何解决 过去一年,我们和大量 Serverless 用户进行了线上和线下的交流, ...

  2. 图解 mysql 运行原理

    目录 一.逻辑架构图 二.Connectors 三.Management Serveices Utilities 四.Connection Pool 连接池 五.SQL Interface SQL接口 ...

  3. 10、Ktor学习-运行程序和基础架构;

    在外部主机中运行应用程序   当您需要在独立维护的主机(例如Tomcat)中运行Ktor应用程序时,您需要一个application.conf文件来告诉Ktor如何启动您的应用程序. 定义配置   在 ...

  4. MySQL主从复制原理应用基础

    mysql主从复制 mysql支持单向 双向 链式级联 实时 异步复制,在复制过程中,一台服务器充当主服务器(Master),而一个或多个其他服务器充当从服务器(Slave) mysql主从复制的应用 ...

  5. ogg mysql的原理_OGG基础原理了解

    一. GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据同步,保持亚 ...

  6. 消息中间件系列(二):Kafka的原理、基础架构、以及使用场景

    一:Kafka简介 Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统. 它最初由LinkedIn公司开发,Linkedi ...

  7. mysql工作原理学习

    MySQL运行原理与基础架构细说 1.MySQL基础 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之 ...

  8. 【图文动画详解原理系列】1.MySQL 索引原理详解

    MySQL简介 MySQL是一个开放源代码的关系数据库管理系统.原开发者为瑞典的MySQL AB公司,最早是在2001年MySQL3.23进入到管理员的视野并在之后获得广泛的应用.2008年MySQL ...

  9. mysql的sql执行原理图_性能测试MySQL之SQL运行原理

    一,MySQL运行原理 两个一样的图 1,SQL语句执行的过程详细说明 如上图所示,当向MySQL发送一个请求的时候,MySQL到底做了什么: a, 客户端发送一条查询给服务器. b, 服务器先检查查 ...

最新文章

  1. LeetCode-数组-35. 搜索插入位置
  2. LINQ系列:LINQ to ADO.NET概述
  3. 中只有负下标里才能有零_门诊营销第一人武威名:诊所如何提升成交率之零风险承诺的运用?...
  4. console的高级使用
  5. 前端学习(2324):angular初步使用
  6. 盲审不到4分的论文竟中了ICLR 2019??!!ICLR 2019官方这样回应
  7. Postman的一个使用技巧----设置环境变量
  8. Grunt-Kmc基于KISSY项目打包
  9. vue中的 $children 和 $parent
  10. yii2 nginx php配置,求助-yii2在nginx上的rewrite配置
  11. android httpclient 设置超时
  12. java获取当天是周几
  13. NOIP201508跳石头
  14. [CF1538E] Funny Substrings (模拟)
  15. 祖冲之究竟是如何算出圆周率的?
  16. Android开发制作带有侧边栏的联系人列表
  17. 1024,只有程序员才会翘首以盼的日子!
  18. 基于ZigBee定位技术下的室内人员定位-室内定位-新导智能
  19. ElementUI日期时间选择器禁止此刻之前的所有时间选择(精确到,时、分、秒)、pickerOptions、日期选择器范围选择
  20. 工程项目管理丁士昭第二版_《工程项目管理》丁士昭第二版 重点内容

热门文章

  1. Flowable 6.6.0 BPMN用户指南 - (5)Spring Boot - 5.8 Flowable应用属性
  2. sklearn中lstm_深度学习之路(一):用LSTM网络做时间序列数据预测
  3. 广东东莞富豪新排位:徐福记家族排第6,vivo创始人闯进前三甲
  4. c语言程序中x>>=1是什么意思??
  5. 关于显示webpack不是内部或外部命令问题的解决方法
  6. easyui(快速入门)
  7. android手机对网络请求抓包
  8. unityAndroid9.0不能下载AB包的问题
  9. 签到签退功能的实现-01
  10. 2022-2027年中国旅游地产行业发展前景及投资战略咨询报告