11. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同
- TCP/IP 协议 :最常用,基于网络套接字,客户端和服务端可跨机器通信,Windows、Linux 都支持。
- Unix Socket 套接字 :本地文件套接字,只能本机访问,速度比 TCP 快,仅 Linux/Unix 支持,Windows 不支持。
- 命名管道(Named Pipe) :Windows 本地进程间通信,只能本机连接,仅 Windows 系统支持。
- 共享内存(Shared Memory) :Windows 本机通信方式,性能高,仅限本地,仅 Windows 支持。
12. 请说明 SQL 层的组件名称和各自的作用
- 连接器:负责客户端连接、身份认证、权限校验。
- 查询缓存 (MySQL8.0 已移除):缓存 SQL 查询结果。
- 分析器:词法、语法解析,检查 SQL 语法是否合法,生成语法树。
- 优化器:执行计划优化,选择索引、确定表连接顺序,生成最优执行计划。
- 执行器:调用存储引擎接口,按照执行计划完成 SQL 执行,返回结果。
13. MySQL 8.0 除了默认的存储引擎 InnoDB 之外,还有哪些常用的存储引擎
- MyISAM:非事务引擎,表级锁,查询速度快
- Memory:内存存储,数据重启丢失,表级锁
- CSV:csv 文本格式存储,不支持索引
- Archive:归档引擎,高压缩,只支持插入、查询
- Blackhole:黑洞引擎,接收 SQL 但不存数据,用于复制测试
14. MySQL 数据库的哪些功能依赖于存储引擎的实现
事务、行锁 / 表锁、MVCC、索引实现、数据读写、崩溃恢复、外键约束、缓存、数据存储格式。SQL 解析优化属于上层,由 Server 层实现。
15. InnoDB 存储引擎和 MyISAM 存储引擎主要有哪些功能特点
InnoDB
- 支持事务 ACID,支持回滚、崩溃恢复
- 支持行级锁、MVCC、外键
- 聚簇索引,支持热备份
- 读写均衡,适合业务生产环境
MyISAM
- 不支持事务,不支持回滚
- 使用表级锁,并发写入性能差
- 非聚簇索引,查询速度快
- 崩溃容易损坏数据,适合只读场景
16. 在 MySQL 数据目录下,都存放哪些数据库组件
数据库文件夹、表空间文件、redo log、undo log、binlog 日志、错误日志、pid 文件、数据字典文件、ibdata 系统表空间、ssl 证书文件。
17. MySQL 的数据字典记录的元数据类型有哪些
库信息、表信息、列字段信息、索引、约束、视图、存储过程、函数、触发器、表空间、权限对象等元数据。
18. 请说明 MySQL 8.0 和之前版本在管理元数据上的区别
- 5.7 及更早:元数据一部分存
.frm磁盘文件,一部分存系统表,文件容易损坏。 - MySQL8.0:取消 frm 文件,全部元数据统一存储在 InnoDB 内部数据字典表,元数据放在 ibd 表空间,支持事务,元数据修改可以回滚,崩溃安全性提升。
19. MySQL 8.0 使用 JSON 序列化元数据存储,有什么好处
可以灵活扩展元数据字段,版本升级时修改元数据结构不用修改表结构;元数据信息完整序列化,便于内部解析;兼容未来新增属性,减少 DDL 操作,提升兼容性。
20. MySQL 8.0 的表空间类型有哪几种,各自的用途是什么
- 系统表空间 ibdata1:存放数据字典、undo 日志等系统数据。
- 独立表空间 (per‑table) :每张 InnoDB 表单独一个
.ibd文件,单表可以迁移、删除。 - 通用表空间 general:多个表共用同一个表空间文件。
- 临时表空间:存放临时表,重启自动清空。
- undo 表空间:存放 undo 回滚日志,用于事务回滚、MVCC。