目录
1. MySQL 服务器进程 mysqld 由哪三层组成,从各自所实现的功能角度分别加以说明。
2. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。
3. 请说明 SQL 层的组件名称和各自的作用。
4. MySQL 8.0 除了默认的存储引擎 InnoDB 之外,还有哪些常用的存储引擎?
5. MySQL 数据库的哪些功能依赖于存储引擎的实现?
6. InnoDB 存储引擎主要有哪些功能特点?
7. MyISAM 存储引擎主要有哪些功能特点?
8. 在 MySQL 数据目录下,都存放哪些数据库组件?
9. MySQL 的数据字典记录的元数据类型有哪些?
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 数据库中的作用。
18. 请比较 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 缓存池,影响整个服务器的性能。
② 会话内存:如排序缓冲区,只影响当前会话的操作。