ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

MySQL体系结构【MySQL第一课】

MySQL体系结构【MySQL第一课】 一、整体架构MySQL 采用客户端 服务器架构。客户端程序负责发起请求服务器程序 mysqld 处理数据库访问一台主机可以运行多个 MySQL 服务实例。整体分为四层连接层、SQL 层、存储层底层对接磁盘、内存、网络。1. 连接层负责处理客户端连接支持多种通信协议• TCP/IP远程访问默认端口 3306跨机器通信• SocketUnix 套接字Linux 本地连接速度更快不走网络• Windows 平台还有共享内存、命名管道用于本地通信。注意当写 h localhost时MySQL 默认走 socket 本地连接不走 TCP如果需要强制 TCP要显式指定协议。连接进来之后服务器会为每一个客户端分配独立线程每个线程处理对应会话的 SQL 请求。支持 SSL 加密连接保障传输安全。2. SQL 层核心处理层拿到 SQL 语句之后依次经过解析器、优化器、查询执行处理权限、语法解析、生成执行计划这一层不直接碰磁盘数据把请求交给下层存储引擎。查询日志这类可选功能也在这一层。3. 存储层存储引擎存储引擎是真正负责读写数据的模块不同引擎特性不一样一张表可以指定自己的存储引擎。二、主流存储引擎重点1. InnoDB默认引擎最重要支持事务、回滚、MVCC 多版本并发控制、行锁、外键、崩溃恢复支持主键索引。表空间分为系统表空间、单表文件表空间。单表模式每张表生成独立.ibd文件方便管理系统表空间是共享的 ibdata 文件。MySQL8 把元数据全部放进 InnoDB 事务数据字典不再依赖一堆单独的系统文件。2. MyISAM老版本引擎不支持事务只有表锁崩溃不能安全恢复查询速度快现在使用很少。3. MEMORY数据全部放在内存断电数据全部丢失适合做临时数据。4. ARCHIVE、BLACKHOLE简单了解即可Archive 适合大量归档只读数据Blackhole 接收写入但是不存数据直接丢弃。三、元数据 数据字典元数据就是库、表、视图、存储过程这些对象的定义信息。• MySQL8 采用事务型数据字典全部存放在 InnoDB 内部支持事务崩溃安全易于升级维护老版本是分散的文件、MyISAM 系统表。• 数据字典会序列化生成 sdi 副本保存表对象信息。四、InnoDB 两大日志高频考点1. 重做日志 redo log修改数据的时候先写 redo 日志再刷磁盘数据。用来崩溃恢复保证已经提交的修改不会丢失实现崩溃安全。2. 回滚日志 undo log保存数据修改之前的旧版本用于事务回滚同时支撑 MVCC实现快照读。undo 可以放在系统 undo 表空间也可以独立出来。临时表的 undo 有一套独立处理逻辑。五、MySQL 内存使用内存分为三大块1. 全局内存服务器启动就分配所有会话共享最关键是 InnoDB 缓冲池缓存表数据、索引减少磁盘 IO是影响性能的核心。2. 会话内存每个数据库连接单独分配连接断开就释放存放排序、临时结果等会话私有数据。3. 各类缓冲区日志缓冲区、连接缓冲区等。六、插件接口简单了解MySQL 支持插件机制不用重启服务就可以加载组件比如全文解析器扩展数据库能力。________________________________________整体逻辑串讲客户端通过协议连上 mysqld连接线程接收 SQLSQL 层解析优化语句下发给存储引擎InnoDB 负责落地数据依靠 redo、undo 日志保障事务安全大量数据优先放到内存缓冲池提升速度库表定义信息统一存放在 InnoDB 事务数据字典。
返回列表