test0605

客户端:向数据库发送请求,cli,jdbc,navicat,sqlyog
采用数据库连接池,减少频繁的开关连接


mysqlserver

连接器
控制用户的连接


缓存
mysql8移除该模块

分析器
词法分析
语法分析

优化器

优化sql语句,规定执行流程
可以查看sql语句的执行计划,可以采用对应的优化点,来加快查询

执行器
SQL语句的实际执行组件


存储引擎:不同的存放位置,不同的文件格式
InnoDB:磁盘
MyISAM:磁盘

memory:内存

 

 

 

首先用户要向我们的 这mysql server 发送一个连接请求,然后意味着 mysql server 这块要有一个连接,用来提供连接服务叫连接器。做一些权限认证。


件叫分析器,sql语句本质上来说就是一个字符串,所以要把我们对应的sql 语句进行一个切分,按照 select from where 等这些关键字进行切分,转成对应的一个词法分析,进行一个语法分析 这两块东西最终会变成一个叫做AST(抽象语法树)树形目录,一层层的


一个sql 语句其实有n种不同的执行方式,比如,你现在a表 ioin b表,
这是一个很简单的sql语句,那么你告诉我,我是先读取 a表还是先读取 b表,其实先读取哪一张表 mysql 优化器会进行相关的选择。


所以在我们的分析器的下一层,还包含优化器。好,也就是说 mysql 里面其实已经自带优化了,但是这个优化是一个通用的规则,只能够适配绝大部分的场景,你一定遇到过mysql 选错索引的情况,所以很多情况下还是需要人为干预的。除此之外,你还要注意一件事,优化器是分两种方式的,一种叫RBO,一种RBO什么意思?叫基于规则的优化。第二个CBO叫基于成本的优化,或者基于代价的优化。这啥意思?现在在很多的一些 sql服务里面,更多的是CBO这种方式。最基本的一个需求,因此很多情况下都是基于成本的。


最下面一块叫执行器。其实这个执行器也非常简单,执行器就是用来跟我们的存储引擎进行数据交互的,也就是说从磁盘读取数据或者写人数据到磁盘中。减少IO量,减少IO次数。

 

性能监控

mysql5.x  慢慢淘汰

show profile查询剖析工具

mysql -uroot -p1234

 

set profiling = 1;

show profiles;

https://dev.mysql.com/doc/refman/5.7/en/

 

show profile for query 2; 指定查看query_id为2的信息

 

performance schema 性能模块

show databases;

看到performance_schema表

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值