MySQL架构分析

架构图

MySQL架构总图

连接层

  • 当MySQl启动(MySQL服务器就是一个进程),等待客户端连接,每一个客户端连接请求,服务器都会新建一个线程处理(如果是线程池的话,则是分配一个新的线程),每个线程独立,拥有各自的内存处理空间。当多个连接同时查询的时候没事,但是如果多个连接同时修改数据就会有数据同步的问题。
  • 连接到服务器,服务器需要对其进行验证,包括用户名,密码,IP。一旦连接成功,还要验证是否具有执行某个特定操作的权限

SQL处理层

  • 这一层的功能主要有:SQL语句的解析、优化、缓存的查询,MySQL内置函数的实现,跨存储引擎功能(所谓跨存储引擎就是说每个引擎都需提供的功能(引擎需对外提供接口)),例如:存储过程、触发器、试图等

    • 如果是查询语句(select),首先会查询缓冲是否已经有相应的结果,有则返回结果,无则进行下一步(如果不是查询语句,同样跳到下一步)
    • 解析查询,创建一个内部数据结构(解析树),这个解析树主要用来SQL语句的语义与语法解析
    • 优化SQL语句,例如重写查询,决定表的读取顺序,以及选择需要的索引等。这一阶段用户是可以查询的,查询服务区优化器是如何进行优化的,便于用户重构查询和修改相关配置,打到最优化。这一阶段还涉及到存储引擎,优化器会询问存储引擎,比如某个操作的开销信息、是否对特定索引有查询优化等。
  • 查看查询缓存SHOW VARIABLES LIKE '%query_cache_type%'

解析查询

存储引擎

  • 显示支持的存储引擎SHOW ENGINES;
  • MyISAM和InnoDB的对比


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 10,164评论 0 30
  • MYSQL 基础知识 1 MySQL数据库概要 2 简单MySQL环境 3 数据的存储和获取 4 MySQL基本操...
    Kingtester阅读 12,338评论 5 116
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 13,284评论 0 44
  • MySQL物理文件组成——日志文件——错误日志(Error Log) 错误日志记录了MyQL服务器运行过程中所有较...
    每天学点编程阅读 6,938评论 0 12
  • 要说,对深圳的印象本来很淡 因为只有一天的时间短暂陪伴 你办事,我等你,心无旁骛 不紧不慢 了无趣味 万象城里给你...
    请再说一遍阅读 3,038评论 12 64