如何理解MYSQL的体系结构

news/2024/9/29 15:46:07/

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会将当前所有全局变量的值复制一份作为会话变量。会话内存的修改只会影响当前的会话(即当前的数据库连接),不会影响其他会话或整个服务器。



http://www.ppmy.cn/news/1531986.html

相关文章

窗口函数用法

窗口函数(Window Functions)是SQL中一种强大的工具,允许你在数据集的特定“窗口”或“分区”内执行计算,而不需要对数据进行分组汇总(即不会减少返回的行数)。这些计算可以包括行号、移动平均、排名等。窗口…

24年Novartis诺华制药社招入职SHL测评:综合能力、性格问卷、动机问卷高分攻略

尊敬的求职者,若您渴望在医药行业的领军企业——诺华制药——开启您的职业生涯,深入了解其社招与校招测评流程至关重要。以下是对诺华SHL测评题型的全面解读,助您在招聘季脱颖而出。 测评构成 诺华的招聘测评由以下三个部分组成&#xff1a…

克里金插值算法文件

由于作者时间发布的比较久,导致一些cesium api和当前版本api不同,故改之: 文件名:kriging.js /*!* author: [object Object]* sakitam-gis/kriging v0.1.0* build-time: 2019-7-6 20:41* LICENSE: MIT* (c) 2019-2019 https://gi…

grafana加载缓慢解决方案

背景 目前随着数据和图表的逐渐增多,Grafana 页面加载速度明显变慢,严重影响了用户体验,几次都有骂娘的冲动.,因此我们需要对 Grafana 进行优化,以提升加载性能。 对于速度优化,我们可以从以下方面进行入…

标准化和归一化的定义、公式、作用、示例、区别

标准化(Standardization) 和 **归一化(Normalization)**是数据预处理中常用的两种技术,目的是调整数据的尺度,使得不同特征的数据可以在同一水平上进行比较或处理。这两种方法在形式和用途上有所不同&#…

海滨体育馆管理系统:SpringBoot实现技巧与案例

2系统关键技术 2.1JAVA技术 Java是一种非常常用的编程语言,在全球编程语言排行版上总是前三。在方兴未艾的计算机技术发展历程中,Java的身影无处不在,并且拥有旺盛的生命力。Java的跨平台能力十分强大,只需一次编译,任…

mac怎么设置ip地址映射

最近开发的项目分为了两种版本,一个自己用的,一个是卖出去的。 卖出的域名是和自己的不一样的,系统中有一些功能是只有卖出去的版本有的,但我们开发完之后还得测试,那就需要给自己的电脑配置一个IP地址映射了&#xf…

【Sentinel-2简介】

Sentinel-2简介 Sentinel-2是欧洲空间局(European Space Agency, ESA)全球环境和安全监视(即哥白尼计划)系列卫星的重要组成部分,由Sentinel-2A和Sentinel-2B两颗卫星组成。以下是关于Sentinel-2的详细介绍&#xff1…