如何理解MYSQL的体系结构

1.MySQL服务器进程mysqld由哪三层组成,从各自所实现的功能角度分别加以说明。

                      连接层                          SQL层                        存储层

连接层:通讯协议,TCP/IP本地远程通讯、Socket本地通讯(Linux);为每一个活动的客户端创建一个连接线程;身份验证,使用OpenSSL创建SSL秘钥进行连接。

SQL层:解析器、授权、查询执行、优化器、查询日志记录。解析器,验证查询的语法语义并将其转化成标准形式;授权,验证用户是否有执行查询的权限;优化器,为每个查询创建最佳执行计划,以决定使用哪些索引以及以何种顺序处理表;查询执行,完成每个查询的执行计划;查询日志,记录服务器接收或执行的查询。

存储层:磁盘 InnoDB MylSAM、内存MEMORY、网络NDBCLUSTER。InnoDB是默认的内置存储引擎,充当不同表类型处理程序的服务器组件。


2.MySQL支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。

TCP/IP协议:可进行本地、远程的连接,适用于所有操作系统。

Socket file:可进行本地连接,适用于UNIX衍生的操作系统、MAC系统。

Shared memory和Named pipes:可进行本地连接,适用于Windows操作系统。


3.请说明SQL层的组件名称和各自的作用。

解析器,验证查询的语法语义并将其转化成标准形式;授权,验证用户是否有执行查询的权限;优化器,为每个查询创建最佳执行计划,以决定使用哪些索引以及以何种顺序处理表;查询执行,完成每个查询的执行计划;查询日志,记录服务器接收或执行的查询。


4.MySQL 8.0除了默认的存储引擎InnoDB之外,还有哪些常用的存储引擎?

MyISAM (常用在旧的系统中)、MEMORY、ARCHIVE、BLACKHOLE、MERGE、CSV、FEDERATED (默认被禁用)、NDBCLUSTER (在MySQL Cluster 发行版中可用)


5.MySQL数据库的哪些功能依赖于存储引擎的实现?

MySQL 将处理数据行的任务委托给这些存储引擎,这些引擎将数据存储在磁盘、内存中,或将其发送到网络上的其他组件,提供索引和其他行优化。创建表时,需要指定哪个可用存储引擎管理其数据。表的存储引擎通常不会影响SQL 层的操作,SQL 层解析所有有效的SQL,存储层处理行操作。SQL 语句是独立于存储引擎的,除了以下语句:

CREATE TABLE 有一个ENGINE 选项,指定每个表使用哪个存储引擎。

ALTER TABLE 有一个ENGINE 选项,可以将表转换为使用不同的存储引擎。

某些功能仅在某些存储引擎中可用:仅InnoDB 和NDB 支持:外键、事务控制操作,如COMMIT 和ROLLBACK。只有InnoDB 和MyISAM 支持全文索引。备份和恢复。优化。外键的引用完整性。全文本搜索。空间数据。


6.InnoDB存储引擎主要有哪些功能特点?

事务安全、多版本并发控制、布局表数据以优化基于主键的查询、支持外键引用完整性约束、损坏后的快速自动恢复、在内存中缓存数据和索引的缓冲池。

7.MyISAM存储引擎主要有哪些功能特点?

使用修复表恢复损坏的MylSAM表、快速简单但是服务器崩溃时会导致表损坏、支持FULLTEXT索引、支持表级锁、格式简单所有支持原始表级别的备份和恢复。


8.在MySQL数据目录下,都存放哪些数据库组件?

数据库文件、日志文件、配置/运行时文件。

9.MySQL的数据字典记录的元数据类型有哪些?

表的定义、存储过程定义、视图定义、方案对象定义、访问控制列表。

10.请说明MySQL 8.0和之前版本在管理元数据上的区别。

MySQL 8.0在管理元数据方面与之前的版本有显著区别,最主要的变化是引入了一个内置的事务性数据字典,而在早期版本如MySQL 5.7中,元数据是存储在多个文件和非事务性表中的,这一改进提高了数据的一致性和完整性。


11.MySQL 8.0使用JSON序列化元数据存储,有什么好处?

MySQL 8.0中的JSON数据类型具有多种特性,在处理JSON数据时更加高效和灵活。首先,JSON数据类型提供了自动验证功能,确保存储的JSON文档是有效的。,JSON文档以二进制格式存储,优化了存储空间并提高了读取速度。MySQL 8.0允许通过键或数组索引直接查找子对象或嵌套值,而无需读取整个文档。JSON数据类型还支持多种内置函数,如JSON_EXTRACT、JSON_ARRAY和JSON_OBJECT等,用于提取和操作JSON数据。

12.MySQL 8.0的表空间类型有哪几种,各自的用途是什么?

数据表空间:系统表空间:在系统表空间中存储元数据和缓冲区。

                      单表文件表空间:默认启用,包含来自单个表的数据和索引。

                      通用表空间:包含来自多个表的数据和索引,创建表空间时命名的.ibd 文件,不属于任何特定的数据库。

还原表空间: 默认情况下,还原日志驻留在两个还原表空间中。

临时表空间:由MySQL 在复杂查询中执行一些操作时使用,用户存储用户数据以供在会话中使用时。

13.对于系统表空间,它保存有哪些数据,默认的存放位置和文件名称是什么?

      系统表空间主要保存数据字典、回滚段、临时段和重做日志等数据。数据字典包括数据库的元数据,如表、索引、用户和权限等信息;回滚段用于事务回滚和恢复;临时段用于排序和其他临时操作;重做日志记录数据库的所有更改,以便在系统崩溃时进行恢复。MySQL中,默认的表空间文件路径由innodb_data_file_path参数定义,文件名通常为ibdata1。


14.请给出单表文件表空间和通用表空间的区别以及各自的适用场合。

单表文件表空间是为每个表创建一个独立的表空间文件,这样可以支持表压缩和空间回收,适用于需要高效管理单个表数据的场景。

通用表空间则是一个可以存储多个表的共享表空间,减少了大量数据删除时的文件系统开销,适用于需要灵活管理多个表和优化存储空间的场景。


15.对于通用表空间类型,每个表空间有且仅有一个数据文件,这个表述对不对?

这个表述不完全正确。通用表空间可以包含一个或多个数据文件,而不仅仅是一个数据文件。通用表空间提供了灵活性,可以根据需要添加多个数据文件,以便更好地管理存储和性能。


16.innodb_data_file_path 和 innodb_file_per_table 这两个参数各自的作用是什么?

innodb_data_file_path参数用于指定InnoDB共享表空间文件的路径和大小。如果没有在My.cnf文件中指定innodb_data_home_dir和innodb_data_file_path,默认会在datadir目录下创建一个名为ibdata1的共享表空间文件。而innodb_file_per_table参数则决定每个表的数据和索引是否存储在单独的.ibd文件中。启用该参数后,每个新创建的表都会有一个独立的表空间文件,这样可以更好地管理磁盘空间,并在删除或清空表时回收存储空间。


17.请说明重做(redo)和还原(undo)各自在MySQL数据库中的作用。

在MySQL数据库中,重做(redo)和还原(undo)日志各自发挥着重要作用。重做日志(redo log)记录了对数据库页的物理修改操作,主要用于在系统崩溃后,通过重放这些日志来恢复已提交事务的修改,确保数据的持久性。还原日志(undo log)则记录了事务对数据库所做更改的相反操作,用于在事务回滚时恢复到事务开始前的状态,并支持多版本并发控制(MVCC),以提供一致性读视图。


18.请比较MySQL全局和会话内存的不同点。

   MySQL中的全局内存和会话内存有几个关键的不同点。全局内存在MySQL服务器启动时初始化,并且这些默认值可以通过修改my.ini文件来更改。全局内存的修改会影响整个服务器的运行。而会话内存则是在每次建立一个新的连接时初始化,MySQL会将当前所有全局变量的值复制一份作为会话变量。会话内存的修改只会影响当前的会话(即当前的数据库连接),不会影响其他会话或整个服务器。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值