MySQL学习笔记一之架构@TOC
架构图如下
MySQL学习笔记一之基础架构

Server层

连接器

  • 负责跟客户端建立连接、获取权限、维持和管理连接
  • 客户端如果太长时间没有动静,连接器会将其自动断开,时间由参数wait_timeout控制,默认值八小时
  • 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接
    • 使用长连接后内存会涨的特别快,因为mysql执行过程中临时使用的内存是管理在连接对象里的,这些资源会在连接断开的时候才释放
      • 解决方案:
        • 定期断开长连接
        • 5.7以上的版本,可以在每次执行一个比较大的操作之后通过执行mysql_reset_connection来重新初始化资源,该过程不需要重新连接和做权限验证,但是会把连接回复到刚刚创建完的状态
  • 短连接是指每次执行完很少的几次查询以后就断开连接,下次查询重新建立一个。

查询缓存

  • 拿到查询请求后,会先到查询缓存中看是否命中,命中的话直接返回。之前执行过的语句会以key-value的形式直接缓存在内存中,key是查询的语句,value是查询的结果
  • mysql默认按需使用的方式开启功能
  • 该功能弊大于利:失效频繁
    • 只要有对一个表的更新,这个表上的所有的查询缓存都会被清空
  • 8.0版本删除了这个功能

分析器

  • 词法分析:识别出字符串是什么
  • 语法分析:根据语法规则判断sql语句是否合法

执行器

  • 执行前,会先判断你对这个表有没有查询权限
  • 数据库的慢查询日志中看到一个rows_examined字段,表示这个语句执行过程中扫描了多少行。
  • 引擎扫面行数跟rows_examined并不是完全相同。

存储引擎层

MySQL学习笔记一之基础架构

官方存储引擎

第三方存储引擎

连接方式

  • TCP/IP套接字方式。建立基于网络的连接请求
  • 命名管道和共享内存。在同一台服务器
  • unix套接字。[mysql -udavid -S /tmp/mysql.sock]

相关文章: