MySQL架构总览:从连接到执行的完整流程
MySQL架构总览 MySQL采用分层架构,从上到下分为4层: ┌────────────────────────────────────────┐ │ 第1层:连接层(Connection Layer) │ │ - 连接器:管理客户端连接 │ │ - 线程池:处理并发连接 │ ├────────────────────────────────────────┤ │ 第2层:SQL层(SQL Layer / Server层) │ │ - 查询缓存(已废弃) │ │ - 分析器:词法分析 + 语法分析 │ │ - 优化器:生成执行计划 │ │ - 执行器:调用存储引擎接口 │ ├────────────────────────────────────────┤ │ 第3层:存储引擎层(Storage Engine) │ │ - InnoDB(默认) │ │ - MyISAM、Memory等 │ ├────────────────────────────────────────┤ │ 第4层:文件系统层(File System) │ │ - 数据文件、日志文件、配置文件 │ └────────────────────────────────────────┘ 1. 连接器(Connector) 作用 管理客户端连接,进行身份验证和权限验证。 连接过程 -- 客户端连接命令 mysql -h127.0.0.1 -P3306 -uroot -p -- 连接流程 1. TCP握手建立连接 2. 验证用户名密码(authentication_string) 3. 获取用户权限列表(grant tables) 4. 返回连接ID(connection_id) 查看连接信息 -- 查看当前连接 SHOW PROCESSLIST; -- 输出示例 +----+------+-----------+------+---------+------+----------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +----+------+-----------+------+---------+------+----------+------------------+ | 1 | root | localhost | test | Query | 0 | starting | SHOW PROCESSLIST | | 2 | root | localhost | NULL | Sleep | 600 | NULL | NULL | +----+------+-----------+------+---------+------+----------+------------------+ 连接状态 状态 含义 典型场景 Sleep 空闲,等待客户端发送请求 连接池中的空闲连接 Query 正在执行SQL 查询、更新、删除等 Locked 等待锁释放 表锁、行锁冲突 Sorting 正在排序 ORDER BY、GROUP BY Sending 发送数据给客户端 大结果集传输 长连接与短连接 长连接:连接保持,减少连接开销 ...