1.mysql逻辑框架简介

  和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用。主要体现在
存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数据的存储提取相分离。这种架构可
以根据业务的需求和实际需要选择合适的存储引擎。

各层介绍:

1.1 连接层

  最上层是一些客户端和连接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于tcp/ip 的
通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程池的概念,为通过认证
安全接入的客户端提供线程。同样在该层上可以实现基于SSL 的安全链接。服务器也会为安全接入的每个客户端验
证它所具有的操作权限。

1.2 服务层

Management Serveices & Utilities 系统管理和控制工具
SQL Interface:

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

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

查询优化器。SQL 语句在查询之前会使用查询优化器对查询进行优化,比如有
where 条件时,优化器来决定先投影还是先过滤。

Cache 和Buffer

查询缓存。如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取
数据。这个缓存机制是由一系列小缓存组成的。比如表缓存,记录缓存,key 缓存,
权限缓存等

1.3  引擎层

  存储引擎层,存储引擎真正的负责了MySQL 中数据的存储和提取,服务器通过API 与存储引擎进行通信。不同
的存储引擎具有的功能不同,这样我们可以根据自己的实际需要进行选取。

1.4 存储层

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

2.show profile

  利用show profile 可以查看sql 的执行周期!

2.1 开启profile

  查看profile 是否开启:show variables like '%profiling%'

  如果没有开启,可以执行set profiling=1 开启!

2.2 使用profile

  执行show prifiles 命令,可以查看最近的几次查询。

  根据Query_ID,可以进一步执行show profile cpu,block io for query Query_id 来查看sql 的具体执行步骤。

2.3 大致的查询流程

mysql 的查询流程大致是:
  mysql 客户端通过协议与mysql 服务器建连接,发送查询语句,先检查查询缓存,如果命中,直接返回结果,
否则进行语句解析,也就是说,在解析查询之前,服务器会先访问查询缓存(query cache)——它存储SELECT 语句以及
相应的查询结果集。如果某个查询结果已经位于缓存中,服务器就不会再对查询进行解析、优化、以及执行。它仅
仅将缓存中的结果返回给用户即可,这将大大提高系统的性能。
  语法解析器和预处理:首先mysql 通过关键字将SQL 语句进行解析,并生成一颗对应的“解析树”。mysql 解析
器将使用mysql 语法规则验证和解析查询;预处理器则根据一些mysql 规则进一步检查解析数是否合法。
  查询优化器当解析树被认为是合法的了,并且由优化器将其转化成执行计划。一条查询可以有很多种执行方式,
最后都返回相同的结果。优化器的作用就是找到这其中最好的执行计划。。
  然后,mysql 默认使用的BTREE 索引,并且一个大致方向是:无论怎么折腾sql,至少在目前来说,mysql 最多只
用到表中的一个索引。

2.4 SQL的执行顺序

  

真正执行的顺序:
  随着Mysql 版本的更新换代,其优化器也在不断的升级,优化器会分析不同执行顺序产生的性能消耗不同而动
态调整执行顺序。下面是经常出现的查询顺序:

2.5 存储引擎MyISAM与InnoDB的对比

对比项 MyISAM InnoDB
外键 不支持 支持
事务 不支持 扶持 
行表锁

表锁,即使操作一条记录也会锁住整个表,
不适合高并发的操作

行锁,操作时只锁某一行,不对其它行有影响,
适合高并发的操作

缓存 只缓存索引,不缓存真实数据

不仅缓存索引还要缓存真实数据,对内存要求较高,而且内
存大小对性能有决定性的影响

  关注点

关注点 读性能 并发写、事务、资源
默认安装 Y Y
默认使用 N Y

自带系统表
使用

Y N

show engines:查看所有的数据库引擎

show variables like '%storage_engine%' 查看默认的数据库引擎

2.6 常见的join查询图

----尚硅谷_mysql_高级学习笔记

【mysql】mysql逻辑框架简介及show profile说明的更多相关文章

  1. MySQL数据分析—(4)关系数据库的三个逻辑框架

    (一)前面课程逻辑梳理 任何一门数据的软件也好,数据构架也好,或者说是数据学科也好,最终都是要解决实际问题的,大家说是不是? 前面jacky讲为什么要引入数据库的时候,举了一个案例,大家还记的吗?大家 ...

  2. MySQL各逻辑模块工作配合

    在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的.接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后 ...

  3. mysqldump常用于MySQL数据库逻辑备份

    mysqldump常用于MySQL数据库逻辑备份. 1.各种用法说明 A. 最简单的用法: mysqldump -uroot -pPassword [database name] > [dump ...

  4. MySQL在Django框架下的基本操作(MySQL在Linux下配置)

    [原]本文根据实际操作主要介绍了Django框架下MySQL的一些常用操作,核心内容如下: ------------------------------------------------------ ...

  5. MySQL InnoDB 逻辑存储结构

    MySQL InnoDB 逻辑存储结构 从InnoDB存储引擎的逻辑结构看,所有数据都被逻辑地存放在一个空间内,称为表空间,而表空间由段(sengment).区(extent).页(page)组成.p ...

  6. MYSQL Innodb逻辑存储结构

    转载于网络 这几天在读<MySQL技术内幕 InnoDB存储引擎>,对 Innodb逻辑存储结构有了些了解,顺便也记录一下: 从InnoDB存储引擎的逻辑存储结构看,所有数据都被逻辑地存放 ...

  7. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  8. Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建

    目录 Spring MVC+Spring+Mybatis+MySQL(IDEA)入门框架搭建 0.项目准备 1.数据持久层Mybatis+MySQL 1.1 MySQL数据准备 1.2 Mybatis ...

  9. MySQL三层逻辑架构

    MySQL的存储引擎架构将查询处理与数据的存储/提取相分离.下面是MySQL的逻辑架构图: 第一层负责连接管理.授权认证.安全等等. 每个客户端的连接都对应着服务器上的一个线程.服务器上维护了一个线程 ...

随机推荐

  1. [刘阳Java]_Web前端入门级练习_迅雷官宣网设计

    也有一段时间没有写一些技术专题文章,今天给大家来几篇Web前端入门级练习的文章.主讲<迅雷官宣网>的设计,相信大家平时也用过迅雷这个下载工具,所以分享的这篇技术大家在一定程序会感兴趣. 先 ...

  2. 【重构】Bilibili UWP 客户端下载视频文件重命名 2.0

    代码已上传Github:https://github.com/zsy0216/BatchModifyBilibiliName 较 master 分支的改变: - 优化了重命名的代码,覆盖更全面,更准确 ...

  3. Hive——join的使用

    Hive--join的使用 hive中常用的join有:inner join.left join .right join .full join.left semi join.cross join.mu ...

  4. Requests方法 -- 参数关联

    一.删除草稿箱1.参数这篇https://www.cnblogs.com/Teachertao/p/11144726.html 2.删除刚才保存的草稿 3.用 fiddler 抓包,抓到删除帖子的请求 ...

  5. idea使用maven下载jar包,出现证书校验问题问题,unable to find valid certification path to requested target

    每次从github上下载下来的项目都报如下错误could not transfer artifact org.springframework.boot:spring-boot-starter-pare ...

  6. [源码解析] 机器学习参数服务器ps-lite (1) ----- PostOffice

    [源码解析] 机器学习参数服务器ps-lite 之(1) ----- PostOffice 目录 [源码解析] 机器学习参数服务器ps-lite 之(1) ----- PostOffice 0x00 ...

  7. 离线安装rpm包并解决依赖(升级vsftpd为例)

    背景  实际开发中,我们的linux服务器是处理离线状态的,并不能访问互联网.如果此时要在linux上安装或者升级软件,就只能通过rpm包的安装方式.rpm包安装有一个缺陷,就是不能处理安装包的依赖问 ...

  8. java垃圾回收机制学习总结

    最近学习了一下java垃圾回收机制,将其主要内容大致总结一下: 1.什么是垃圾回收机制 java GC机制(garbage collection,垃圾收集,垃圾回收),是java特有的机制,作为jav ...

  9. js之检测浏览器

    getBrowser () { let ua = navigator.userAgent.toLocaleLowerCase() let browserType = null if (ua.match ...

  10. QT常用控件(一)——菜单栏和对话框

    引言 QMainWindow 是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar).多个工具栏(tool bars).多个锚接部件(dock widgets).一个状态栏(status ...