导图社区 mysql 实战45讲
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一。本思维导图是作者自己的MySQL学习经验总结,希望对你有帮助!
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
mysql 实战45 讲
1. 基础架构
1.1. mysql基础架构
1.1.1. 
1.1.2. 分类
1.1.2.1. Server层
1.1.2.1.1. Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。
1.1.2.2. 存储引擎层
1.1.2.2.1. 区别
1.1.2.2.1.1. 负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL5.5.5版本开始成为了默认存储引擎。
1.1.2.2.1.2. 子主题
1.1.2.2.1.2.1. 你执行createtable建表的时候,如果不指定引擎类型,默认使用的就是InnoDB。不过,你也可以通过指定存储引擎的类型来选择别的引擎,比如在createtable语句中使用engine=memory,来指定使用内存引擎创建表。不同存储引擎的表数据存取方式不同,支持的功能也不同
1.2. 组件
1.2.1. 连接器
1.2.1.1. 
1.2.1.2. 这就意味着, 一个用户成功建立连接后, 即使你用管理员账号对这个用户的权限做了修改, 也不 会影响已经存在连接的权限。修改完成后, 只有再新建的连接才会使用新的权限设置。
1.2.1.3. 
1.2.1.4. 
1.2.1.5. 
1.2.1.6. 
1.2.2. 查询缓存
1.2.2.1. 查询缓存的过程
1.2.2.1.1. 
1.2.2.2. 查询缓存的弊端
1.2.2.2.1. 查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空。因此很可能你费劲地把结果存起来,还没使用呢,就被一个更新全清空了。对于更新压力大的数据库来说,查询缓存的命中率会非常低。除非你的业务就是有一张静态表,很长时间才会更新一次。比如,一个系统配置表,那这张表上的查询才适合使用查询缓存。
1.2.2.3. 按需使用
1.2.2.3.1. 
1.2.3. 分析器
1.2.3.1. 
1.2.3.2. 
1.2.4. 优化器
1.2.4.1. 
1.2.5. 执行器
1.2.5.1. 
1.2.5.2. 
2. 日志系统:一条更新SQL是如何执行的
2.1. 更新操作的过程
2.1.1. 当有一条记录需要更新的时候,InnoDB引擎就会先把记录写到redolog(粉板)里面,并更新内存,这个时候更新就算完成了。同时,InnoDB引擎会在适当的时候,将这个操作记录更新到磁盘里面,而这个更新往往是在系统比较空闲的时候做,这就像打烊以后掌柜做的事。如果今天赊账的不多,掌柜可以等打烊后再整理。
2.1.2. WAL技术,WAL的全称是WriteAheadLogging,它的关键点就是先写日志,再写磁盘,也就是先写粉板,等不忙的时候再写账
2.1.3. 如果今天赊账的不多,掌柜可以等打烊后再整理。但如果某天赊账的特别多,粉板写满了,又怎么办呢?这个时候掌柜只好放下手中的活儿,把粉板中的一部分赊账记录更新到账本中,然后把这些记录从粉板上擦掉,为记新账腾出空间。
2.2. InnoDB的redolog
2.2.1. InnoDB的redolog是固定大小的,比如可以配置为一组4个文件,每个文件的大小是1GB,那么这块“粉板”总共就可以记录4GB的操作。从头开始写,写到末尾就又回到开头循环写,
2.2.2. 
2.2.3. 
2.3. redolog来实现crash-safe能力
2.3.1. 
2.4. 执行器和InnoDB引擎在执行这个简单的update语句时的内部流程。
2.4.1. 
2.4.2. 
2.4.3. 这里我给出这个update语句的执行流程图,图中浅色框表示是在InnoDB内部执行的,深色框表示是在执行器中执行的。
2.5. 两阶段提交
2.5.1. 怎样让数据库恢复到半个月内任意一秒的状态
2.5.1.1. 
2.5.2. 
2.5.3. 
2.6. 小结
2.6.1. 
3. 主题
4. 主题
5. 主题
6. 主题
7. 主题
8. 主题
9. 主题