- MySQL 服务器进程 mysqld 由哪三层组成,从各自所实现的功能角度分别加以说明。
答:连接层:为每个连接维护一个线程,进行身份验证,处理查询执行。
SQL层:包括了解析,授权分析,优化,执行,查询日志记录
存储层:管理表数据,常见的存储引擎有InnoDB,MyISAM,MEMORY和NDBCLUSTER
2. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。
答:
通讯协议 | 连接方式 | 所支持的操作系统 |
TCP/IP | Local,remote | AII |
Socket file | local | UNIX-derived operating systems Including Linux,BSD,Max OS X |
Shared memory | local | Windows |
Named pipes | local | Windows |
3.请说明 SQL 层的组件名称和各自的作用。
答:解析器:验证查询的语法和语义,并将其装欢为标准表单
授权:验证是否允许所连接的用户运行该查询,并且对该查询所引用的对象具有足够的权限
优化器:为每个查询创建一个最佳的执行计划,这涉及到决定使用哪些索引以及以那个顺序处理表
查询执行:完成每个查询的执行计划
查询日志记录:记录服务器接受或执行的查询
4.MySQL 8.0 除了默认的存储引擎 InnoDB 之外,还有哪些常用的存储引擎?
答:MyISAM, MEMORY, ARCHIVE, BLACKHOLE, MERGE, CSV, FEDERATED, NABCLUSTER
InnoDB和NDBCLUSTER是仅有的俩个支持外键的事务性MySQL存储引擎
5.MySQL 数据库的哪些功能依赖于存储引擎的实现?
答:1.存储介质:磁盘 内存 网络数据节点 空(BLACKHOLE)
- 事务处理能力:具有提交和回退的多语句事务 隔离等级
- 锁定:表级别之上的锁定粒度 多版本并发控制(MVCC)
6.InnoDB 存储引擎主要有哪些功能特点?
答:InnoDB是MySQL的默认存储引擎,它支持事务安全(符合ACID原则),MVCC(多版本并发控制),行级锁定,支持外键引用完整性约束,损坏后的快速自动回复,支持内存缓存数据和索引缓冲池
7.MyISAM 存储引擎主要有哪些功能特点?
答:MyISAM是MySQL5.5之前的默认存储引擎 快速简单 支持FULLTEXT索引 支持空间数据类型和索引 支持标记锁 仅支持原始表级别的备份和恢复
8.在 MySQL 数据目录下,都存放哪些数据库组件?
答:保存有mysql数据库和其他数据库目录 InnoDB日志文件和系统表空间
9.MySQL 的数据字典记录的元数据类型有哪些?
答:1)Table Definitions 2)SP Definitions 3)ACL
4)View Definitions 5)Schemas
10.请说明 MySQL 8.0 和之前版本在管理元数据上的区别。
答:MySQL 8.0使用的是InnoDB存储引擎
之前版本使用MyISAM存储引擎
11.MySQL 8.0 使用 JSON 序列化元数据存储,有什么好处?
答:JSON序列化元数据存储可以跨平台高效率的共享。
12.MySQL 8.0 的表空间类型有哪几种,各自的用途是什么?
答:数据表空间:1.系统文件表空间
- 通用表空间:
- 单表文件表空间:
还原表空间:未修改的原始的副本
临时表表空间:临时表的数据就在临时表表空间
13.对于系统表空间,它保存有哪些数据,默认的存放位置和文件名称是什么?
答:InnoDB数据字典:表 索引和列与数据
更改缓冲区:对辅助索引页的更改
双写缓冲区:确保崩溃安全的写入
存放在:数据目录中的一个或多个文件
文件名称:ibdata1 ibdata2
14.请给出单表文件表空间和通用表空间的区别以及各自的适用场合。
答:单表文件表空间:1.表压缩:不能在相同的通用表空间或系统表空间中混合压缩和为压缩的表。
- 表空间的回收(带有截断表):InnoDB删除并重新创建截断的文件可允许的表空间,并将空闲空间释放回文件系统
通用表空间:1.减少了可删除大量数据的语句的文件系统开销(如DROP表或截断表)
2.减少了内存,以存储表空间元数据
15.对于通用表空间类型,每个表空间有且仅有一个数据文件,这个表述对不对?
答;不对
16..innodb_data_file_path 和 innodb_file_per_table 这两个参数各自的作用是什么?
答:innodb_data_file_path选项可配置磁盘上的InnoDB系统表空间文件的大小和物理位置
Innodb_file_per_tabl选项指定MySQL是将新的表数据和索引存储在系统表空间中,还是存储在一个单独的。ibd文件中
17.请说明重做(redo)和还原(undo)各自在 MySQL 数据库中的作用。
答:重做:1.再将InnoDB更改操作进行到数据文件之前存储它们
- 使InnoDB能够优化数据写入,从而使它们不需要同步发生
2.是否在宕机恢复期间使用
1)InnoDB会重新执行重做日志文件中的操作,以确保所有表之间的事务一致性,即使是对于在宕机前没有写入数据文件的操作
3.默认情况下是否位于数据目录中
1)通常,ib-logfile0和logfile1
2)由innodb_log_group_home_dir选项控制
还原:1.存储被事务修改的未修改数据的副本,以便InnoDB可以访问早期版本的数据
2.也被称为回滚段
3.默认情况下是否存储在还原表空间中
4.用于MVCC和回退:1)InnoDB从还原日志中检索未经修改的数据
2)如果您回退一个事务处理
3)如果另一个事务需要经早期的数据作为以中国i行读取的一部分进行查看
5.内部划分为:1)插入还原缓冲区