本篇聊下Mysql一些基础内容
MySQL基本架构图

连接器
- 负责跟数据库连接,获取权限,维护和管理连接。
- 连接后我们没有交互,会处于空闲
Sleep
状态 show processlist
可以查询当前连接的状态- 空闲久了,连接会自动断开。由
wait_timeout
空值,默认是8小时 - 如果保证数据库连接在使用时没有被、断开
- 1 断开后,直接判断下是否需要重新连接。即随用随连
- 2 使用长连接(但是因为MySQL临时使用的内存是在连接对象里面的。就是会导致OOM,导致MySQL重启,或者是JVM频繁GC)
查询缓存
- 就是提供缓存,如果没有命中就重新查询。
- 不使用缓存可以在查询的时候增加
SQL_NO_CACHE
例如select SQL_NO_CACHE from table
分析器
- 先进行词法分析器
- 再进行语法分析
优化器
- 如果有索引,判断使用哪一个索引
- 执行顺序会优化。先做什么,再做什么,顺序不一样,查询的效率可能就不同
常用的两种MySQL引擎对比

顺便扯一下数据库三大范式
- 第一范式: 每个特征都要保持原子性
- 第二范式: 表中每列都跟主键相关。 记录的唯一性
- 第三范式: 任何列不能由其他列派生出来。就是不能冗余