先问几个问题
- 为什么修改权限后要到下次建立连接时才生效
- mysql的长连接与短连接各有什么优劣
- 为什么使用长连接后有时mysql占用内存涨的特别快
- 如何解决长连接的占用内存多的问题
一、学习思想:
自顶向下,鸟瞰全貌
二、基本架构:
1、跨存储引擎的功能
- 连接器:先连接
- 功能:负责与客户端建立连接、获取权限、维持和管理连接
- 实例:进入mysql时输入的:mysql -u xxx -p xxx
- 连接成功后:从权限表中查出权限,是本次连接的所有权限(修改权限下次生效)
show processlist
命令可以查看当前所有连接- 连接器可以自动断开:由变量wait_timeout控制
- mysql的长短连接推荐阅读
- 长连接:连接后,若客户端持续请求,则一直使用同一个连接
- 好处:减少连接的开销
- 坏处:长时间占用内存空间,系统会因其占用内存过多而强行杀掉,导致mysql异常退出
- 短连接:执行完几次查询后就断开,需要重连
- 频繁建立连接耗时
- 查询缓存
- 8.0版本已废弃
- 缓存失效非常频繁
- 分析器:你要干啥
- 从SQL语句中进行解析语句,生成解析树
- 检查语法是否正确
- 优化器:最优解
- 决定使用什么索引
- 决定多表关联时的连接顺序
- 执行器:去做吧
- 判断是否有权限
- 调用存储引擎的API
2、存储与提取
- 插件式:支持InnoDB、MyISAM、Memory等多个存储引擎
- InnoDB是默认的存储引擎