聊聊MySQL[基本概念]

本篇聊下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引擎对比

顺便扯一下数据库三大范式

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

参考大佬

MySQL 常用数据存储引擎区别
《吊打面试官》系列-数据库基础知识