mysqlmysql逻辑框架简介及show profile说明

Posted 天际星痕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysqlmysql逻辑框架简介及show profile说明相关的知识,希望对你有一定的参考价值。

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_高级学习笔记

以上是关于mysqlmysql逻辑框架简介及show profile说明的主要内容,如果未能解决你的问题,请参考以下文章

LESS CSS 框架简介

各类主流框架及设计模式简介

mysqlmysql 常用建表语句

python财经数据接口包Tushare pro的入门及简单使用方式(大数据,股票数据接口)

Spring ——简介及环境搭建跑通Hello

Spring 框架基础(06):Mvc架构模式简介,执行流程详解