1、mysql可分为server层和存储引擎
1.1 server层:
连接器、查询缓存、分析器、优化器 、执行器、包含所有内置函数(日期,时间,数学、加密函数),所有跨存储引擎的功能都在此层,比如存储过程、触发器、视图等
1.1.1 连接器:
负责跟客户端建立连接、获取权限、维持和管理连接
mysql -h$host -P$port -u$user -p$password
备注:
a、sleep状态是连接完成,但没有后续操作,此连接就会处于空闲状态;
b、如果在连接过程中对当前用户的权限做了修改,也需要在断开重新连接之后此权限才生效;
c、长连接与短连接:长连接使用过多会出现mysql内存占用过高导致mysql异常重启的情况,解决方法可以是:定期断开长连接,5.7及以上,则可以通过mysql_reset_connection来重新初始化连接缓存,这个过程不会重连和重新做权限验证,但会恢复到刚刚创建完的状态;
1.1.2 查询缓存:
a. 建立连接之后便会去查询缓存,缓存会以key-value对的形式保存,key是查询语句,value是查询结果。若查询命中缓存,则不需要后续复杂的逻辑。
b. 但查询缓存的失效特别频繁,只要有对一个表的更新,那么此表的缓存就会全部清空,因此不建议使用查询缓存。除非是表的数据变动频率不高的,如系统配置表
c.5.8.0已完全将查询缓存模块删掉
1.1.3 分析器:内建解析树,数据表和数据列是否存在, 别名是否有歧义,如果通过建立一个新的解析树,再提交给优化器
a.词法分析、语法分析
1.1.4 优化器
优化器决定最优sql执行顺序,如最优索引,join表的顺序等
1.1.5 执行器
查询对当前表是否有执行权限,若有权限,打开表,根据表引擎接口执行sql
1.2 存储引擎负责数据的存储和提取,包含InnoDB,MyISAM,Memry等,mysql5.5.5版本以上默认InnoDB 备注:
1、wait_timeout针对非交互式连接;
interaction_timeout针对交互式连接;
通过mysql客户端连接数据库是交互式连接,通过jdbc连接数据库是非交互式连接;
2、执行完成后写入缓存 问题:
1、为什么对权限的检查不在优化器之前做?
答:触发器是在执行器阶段确定的
2、我创建了一个没有select权限的用户,执行select * from T where k=1,报错“select command denied”,并没有报错“unknown column”,是不是可以说明是在打开表之后才判断读取的列不存在?
答:这是一个安全问题,当既没有查询权限,where条件的字段不存在时,未避免泄露太多信心,会直接判断无权限
3、分析器到查询缓存的那个箭头表示什么意思?
答:更新完回来失效缓存;
4、基本架构图中,分析器指向了查询缓存,是这时候把KEY放入缓存的吗?执行器不指向缓存Value是什么时候放入缓存的?
答:其实执行完会写入,避免图乱,箭头去掉了,文中:执行完成后,结果写入查询缓存;

学习笔记:非原著

MYSQL实战-1.mysql基本架构的更多相关文章

  1. Mysql实现企业级数据库主从复制架构实战

    场景 公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公司业务中断,损失100万,老王做出深刻反省,公司 ...

  2. 项目实战7—Mysql实现企业级数据库主从复制架构实战

    Mysql实现企业级数据库主从复制架构实战 环境背景:公司规模已经形成,用户数据已成为公司的核心命脉,一次老王一不小心把数据库文件删除,通过mysqldump备份策略恢复用了两个小时,在这两小时中,公 ...

  3. 《MySQL实战45讲》学习笔记1——MySQL的基础架构

    在<极客时间>订阅了<MySQL实战45讲>专栏,总觉得看完和没看一样

  4. MySQL实战 | 01-当执行一条 select 语句时,MySQL 到底做了啥?

    原文链接:当执行一条 select 语句时,MySQL 到底做了啥? 也许,你也跟我一样,在遇到数据库问题时,总时茫然失措,想重启解决问题,又怕导致数据丢失,更怕重启失败,影响业务. 就算重启成功了, ...

  5. Mysql实战45讲 05讲深入浅出索引(下)极客时间 读书笔记

    极客时间 Mysql实战45讲 04讲深入浅出索引(下)极客时间 笔记体会: 回表:回到主键索引树搜索的过程,称为回表覆盖索引:某索引已经覆盖了查询需求,称为覆盖索引,例如:select ID fro ...

  6. MySQL实战45讲学习笔记:第十五讲

    一.引子 在今天这篇答疑文章更新前,MySQL 实战这个专栏已经更新了 14 篇.在这些文章中,大家在评论区留下了很多高质量的留言.现在,每篇文章的评论区都有热心的同学帮忙总结文章知识点,也有不少同学 ...

  7. 《MySQL实战45讲》(1-7)笔记

    <MySQL实战45讲>笔记 目录 <MySQL实战45讲>笔记 第一节: 基础架构:一条SQL查询语句是如何执行的? 连接器 查询缓存 分析器 优化器 执行器 第二节:日志系 ...

  8. 《MySQL实战45讲》个人笔记-基础篇

    拜读了林晓斌大佬的<MySQL实战45讲>,特意做个知识点总结,以便后期回忆. 01.基础架构:一条SQL查询语句是如何执行的? Server 层包括连接器.查询缓存.分析器.优化器.执行 ...

  9. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

随机推荐

  1. 八、ARM 汇编程序格式和程序控制

    8.1 汇编程序格式 源程序中的语句可以分为两种类型:指令性语句.指示性语句 指示性语句就是一些伪操作,在 MDK 编译环境下的伪操作有下面几种: 符号定义伪操作 数据定义伪操作 汇编控制伪操作 其他 ...

  2. 并行操作多个序列map

    >>> def add1(a): return a + 1 >>> def add2(a,b): return a + b >>> def add ...

  3. 【GDOI2014模拟】雨天的尾巴

    题目 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 根拔起,以及田地里 ...

  4. 无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息"无法在此会话中启动更多的事务"。

    无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务.由于 XACT_ABORT 选项已设置为 OFF,因 ...

  5. linux运维、架构之路-Kubernetes本地镜像仓库+dashboard部署

    一.部署docker registry            生产环境中我们一般通过搭建本地的私有镜像仓库(docker registry)来拉取镜像. 1.拉取registry镜像 [root@k8 ...

  6. linux运维、架构之路-nfs网络文件系统

    一.nfs介绍  NFS是Network File System的缩写,是网络文件系统,它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录,主要存储用户上传的图片附件等信息. ...

  7. 数组Array方法: indexOf、filter、forEach、map、reduce使用实例

  8. div拖拽到iframe上方 导致 缩放和拖拽的不平滑和鼠标事件未放开 解决方法

    思路一:用在开始进行缩放(触发了resizable的start事件)为iframe添加z-index属性,将iframe放置在最下层. $("#draggable").resiza ...

  9. ViewContainerRef 动态创建视图

    Angular DOM 操作 相关的APIs和类: 查询DOM节点 template variable ref: 模版变量引用,相当于react中的ref ViewChild: 查询DOM,返回单个元 ...

  10. C++ 对象间通信框架 V2.0 ××××××× 之(四)

    类定义:CMemberFuncPointer ======================================================================= // Me ...