目录
1. MySQL 服务器进程 mysqld 由哪三层组成,从各自所实现的功能角度分别加以说明。
2. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。
4. MySQL 8.0 除了默认的存储引擎 InnoDB 之外,还有哪些常用的存储引擎?
10. 请说明 MySQL 8.0 和之前版本在管理元数据上的区别。
11. MySQL 8.0 使用 JSON 序列化元数据存储,有什么好处?
12. MySQL 8.0 的表空间类型有哪几种,各自的用途是什么?
13. 对于系统表空间,它保存有哪些数据,默认的存放位置和文件名称是什么?
14. 请给出单表文件表空间和通用表空间的区别以及各自的适用场合。
15. 对于通用表空间类型,每个表空间有且仅有一个数据文件,这个表述对不对?
16. innodb_data_file_path 和 innodb_file_per_table 这两个参数各自的作用是什么?
17. 请说明重做(redo)和还原(undo)各自在 MySQL 数据库中的作用。
1. MySQL 服务器进程 mysqld 由哪三层组成,从各自所实现的功能角度分别加以说明。
MySQL 服务器进程 mysqld 通常可以分为三层:
①
连接层:负责管理客户端连接,处理连接和授权认证。主要包含连接池、线程管理、身份验证等。
②
服务层:实现
SQL
解析、优化、执行计划生成、存储过程等功能。服务层主要负责查询解析、优化和缓存。
③
存储引擎层:负责与存储引擎进行交互,通过抽象接口操作数据文件,处理具体的数据存取
和管理。这一层提供了数据的存储和索引功能。
2. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。
(1)
MySQL
支持的通讯协议:
TCP/IP:用于远程连接,支持跨平台。
UNIX socket:仅用于本地连接,支持类 UNIX 操作系统。
Named Pipe(命名管道):仅在 Windows 系统下支持,用于本地连接。
Shared Memory(共享内存):仅在 Windows 系统下支持,用于本地连接。
(2)
不同操作系统支持的连接方式有所不同:
UNIX Socket 只在类 UNIX 系统中使用;
而 Named Pipe 和 Shared Memory 只在 Windows 中使用。
3. 请说明 SQL 层的组件名称和各自的作用。
SQL
层主要组件:
① 解析器:将 SQL 语句解析成内部数据结构,并进行语法和语义检查。
② 查询优化器:对 SQL 语句进行优化,生成执行计划。
③ 执行器:负责执行 SQL 语句,根据执行计划调用存储引擎获取数据。
④ 缓存模块:缓存查询结果,提高查询性能。
⑤ 存储过程和触发器管理器:管理存储过程和触发器的执行。
4. MySQL 8.0 除了默认的存储引擎 InnoDB 之外,还有哪些常用的存储引擎?
除了默认的 InnoDB 存储引擎外,MySQL 8.0 还常用的存储引擎包括:
①
MyISAM
:不支持事务,适用于读密集型操作。
② Memory:将数据存储在内存中,适用于需要高速读写的临时表。
③ CSV:以 CSV 格式存储数据,适用于数据导出和导入。
④ Archive:适用于归档操作,支持高压缩率。
⑤ NDB:用于 MySQL Cluster,支持高可用性和分布式存储。
5. MySQL 数据库的哪些功能依赖于存储引擎的实现?
MySQL
的以下功能依赖于存储引擎:
① 事务支持:如 InnoDB 支持 ACID 特性的事务,
而
MyISAM
不支持事务。
② 外键约束:InnoDB 支持外键,
而
MyISAM
不支持外键。
③ 表锁与行锁:InnoDB 支持行级锁,
而
MyISAM
只支持表级锁。
④ 全文索引:MyISAM 原生支持全文索引,
而
InnoDB 直到 MySQL 5.6
之后才支持全文索引。
6. InnoDB 存储引擎主要有哪些功能特点?
InnoDB
存储引擎的功能特点:
支持事务(ACID);
支持外键约束;
支持行级锁;
使用 MVCC 机制提高并发性;
支持崩溃恢复和自动修复。
7. MyISAM 存储引擎主要有哪些功能特点?
MyISAM
存储引擎的功能特点:
不支持事务;
只支持表级锁;
查询性能较好,适用于读操作多的场景;
支持全文索引。不支持外键。
8. 在 MySQL 数据目录下,都存放哪些数据库组件?
MySQL
数据目录下存放的数据库组件:
数据文件(.ibd、.myd、.myi 等);
表定义文件(.frm);
日志文件(如 redo 日志、undo 日志);
系统表空间文件(如 ibdata1);
配置文件(my.cnf 或 my.ini)。
9. MySQL 的数据字典记录的元数据类型有哪些?
MySQL
数据字典记录的元数据类型:
表、视图、触发器、存储过程和函数的定义;
用户及权限信息;
表空间和文件相关的元数据;
索引和分区信息。
10. 请说明 MySQL 8.0 和之前版本在管理元数据上的区别。
MySQL 8.0 和之前版本在管理元数据上的区别:
MySQL 8.0 版本将元数据存储在 InnoDB
的数据字典中,而不再依赖文件系统中的 .frm、.trg、.par 文件等,大大简化了管理和备份。
11. MySQL 8.0 使用 JSON 序列化元数据存储,有什么好处?
MySQL 8.0 使用 JSON 序列化元数据存储的好处:
JSON 结构化存储提高了元数据的可读性和可扩展性,支持灵活查询,并简化了元数据的导入和导出。
12. MySQL 8.0 的表空间类型有哪几种,各自的用途是什么?
MySQL 8.0
的表空间类型:
①
系统表空间:存储 InnoDB 的数据字典和 Undo 日志。
②
文件表空间:用于单个表的存储。
③
通用表空间:支持多个表共享存储空间。
13. 对于系统表空间,它保存有哪些数据,默认的存放位置和文件名称是什么?
系统表空间保存的数据及默认存放位置和文件名称:
① 数据:InnoDB 的数据字典、Undo 日志。
② 默认存放位置和文件名称:数据目录下,文件名为 ibdata1。
14. 请给出单表文件表空间和通用表空间的区别以及各自的适用场合。
单表文件表空间和通用表空间的区别及适用场合:
① 单表文件表空间:每个表独占一个文件,适用于单个表数据量较大的情况。
② 通用表空间:多个表共享一个表空间,适用于表结构相似且数据量相对较小的情况。
15. 对于通用表空间类型,每个表空间有且仅有一个数据文件,这个表述对不对?
“ 通用表空间类型,每个表空间有且仅有一个数据文件 ” 这个表述错误;
通用表空间可以包含多个数据文件,以支持更大的存储需求。
16. innodb_data_file_path 和 innodb_file_per_table 这两个参数各自的作用是什么?
innodb_data_file_path 和 innodb_file_per_table
参数作用:
① innodb_data_file_path:定义系统表空间的数据文件路径和大小。
② innodb_file_per_table:启用后,每个表使用独立的表空间文件(.ibd)。
17. 请说明重做(redo)和还原(undo)各自在 MySQL 数据库中的作用。
Redo 和 Undo 在 MySQL
数据库中的作用:
① Redo:用于崩溃恢复,保证事务的持久性。
② Undo:用于回滚未提交的事务,支持 MVCC 提供一致性读。
18. 请比较 MySQL 全局和会话内存的不同点。
MySQL
全局内存和会话内存的不同点:
① 全局内存:如 InnoDB 缓存池,影响整个服务器的性能。
② 会话内存:如排序缓冲区,只影响当前会话的操作。