我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

大家好,我是漫布,一直在整理2022年最新的MySQL面试题,也可以通过下面我的博客地址在线阅读,今天讲的是第一篇:数据库基础,本文首发于微信公众号:漫布

%E5%89%8D%E8%A8%80.html

前言

最近整理了一份常见的MySQL面试题清单,并根据自己的经验,标注了一些出现的概率,其中出现概率最高的是5★。例如:

如何删除数百万或更多的数据

发生率:★★★

一般来说,在面试中,数据库相关的面试题经常出现的关键词有SQL优化、索引、存储引擎、事务、死锁、乐观锁、悲观锁、关系型数据库与非关系型数据库的对比等。问完这些问题大概需要10到20分钟的时间(一般一轮面试大概需要1个小时),基本可以让面试官对你的数据库知识有一定的了解。

如果你有在线运维经验的话,一般都会被问到如何扩容数据库,如何给大表加索引,业务高峰时如何给大表添加字段等等问题。

0. 概述

1.您通常使用哪个版本的MySQL?

发生率:★★★★

你可以说说你使用的MySQL版本,比如我用的是5.7版本,然后可以简单说一下这个版本的一些特性:

1)安全

MySQL 5.7 中有许多与安全相关的改进,包括:

MySQL 数据库初始化完成后会生成一个 root@ 用户,从 MySQL 5.7 开始,root 用户的密码不再为空,而是随机生成的密码,这也导致用户在安装 5.7 时会发现 5.7 和 5.6 版本有很大区别。

MySQL官方已经删除了测试数据库,安装后默认是没有测试数据库的,即使用户创建了测试数据库,也可以控制对测试数据库的权限。

MySQL 5.7 版本提供了更加简单的SSL安全访问配置,默认连接采用SSL加密。

您可以为用户设置密码过期策略,强制他们在一定时间后更改密码。

2)灵活性

MySQL 5.7 的两个新特性 JSON 和

();

('{“key1”:“”,“key2”:“”}');

3)可用性

在线设置复制过滤规则,不再需要重启MySQL,只需要停止SQL,修改完成后再启动SQL即可。

这个主要讲自己的理解,也可以自己扩展一下,增加面试分数。

2. 三大数据库范式是什么?

发生率:★★★

第一范式:每一列都不能进一步拆分。

第二范式:基于第一范式,非主键列完全依赖于主键,不能成为主键的一部分。

第三范式:基于第二范式,非主键列只依赖于主键,不依赖于其他非主键。

在设计数据库结构的时候,尽量遵守三范式,如果不遵守,一定有充分的理由,比如性能,事实上,我们经常为了性能而对数据库的设计做出妥协。

3.MySQL权限相关的表有哪些?

发生率:★★★

MySQL 服务器通过权限表来控制用户对数据库的访问,权限表存储在 mysql 数据库中,通过脚本初始化。这些权限表分别是 user、db、host。下面介绍这些表的结构和内容:

用户权限表:记录了允许连接服务器的用户账号信息,里面的权限是全局的。

db权限表:记录各个账户对各个数据库的操作权限。

权限表:记录数据表级别的操作权限。

权限表:记录数据列级别的操作权限。

主机权限表:与 db 权限表配合使用,对给定主机上的数据库级操作权限提供更详细的控制。此权限表不受 GRANT 和 语句的影响。

4. MySQL 有多少种输入格式?它们之间有什么区别?

发生率:★★★

MySQL 有三种格式:、行和混合。

1)该模式下,每一条修改数据的SQL语句都会被记录在 中,不需要记录每一行的变化,减少了日志量,节省了IO,提高了性能。由于SQL的执行是有上下文的,所以保存的时候需要保存相关信息。同时,一些使用函数的语句无法被记录和复制。

2)行级别,不记录SQL语句上下文相关信息,只记录修改了哪条记录。记录单位是每一行的改变,基本都能记录下来。但由于很多操作会改变大量的行(比如alter table),所以这种文件模式保存的信息太多,日志量太大。

3)混合:一种折衷方案。正常操作时使用记录,不可用时使用行。

另外MySQL新版本还在行级别做了一些优化,当表结构发生变化时,语句会记录下来,而不是一行一行地记录。

您通常使用哪些关系型和非关系型数据库?能谈谈您对它们的理解吗?

发生率:★★★★★

主要说一下使用过的关系型数据库,比如MySQL,非关系型数据库(NoSql数据库)比如Redis等。

1)商业

关系型数据库最重要的特性就是事务一致性,所以对于一致性要求较高的订单模型,建议使用MySQL。

2)关系数据库的另一个特点是具有固定的表结构

其实在业务模型中,固定的表结构其实是好事,没有约束的模型更容易出问题。

3)复杂SQL,特别是多表关联查询

NoSql 不支持 JOIN 查询。

4)指数法

关系数据库:B树、哈希等。

NoSql:键值索引

5)并发支持

关系型数据库:通过事务和锁来支持并发,在高并发情况下,执行效率较低。

NoSql:打破了传统关系数据库范式的约束和事务一致性,因此具有较高的并发性能。

当然你也可以多看看,毕竟这篇采访出现的概率还是比较大的。

图片

5、您能简单谈一下对MySQL的逻辑架构的理解吗?

发生率:★★★

第一层是服务器层,主要提供连接处理、授权认证、安全等功能。

第二层实现MySQL核心服务功能,包括查询解析、分析、优化、缓存以及日期、时间等所有内置功能。所有跨存储引擎的功能都在这一层实现,如存储过程、触发器、视图等。

第三层是存储引擎层,负责在 MySQL 中存储和检索数据。服务器通过 API 与存储引擎进行通信。这些接口屏蔽了不同存储引擎之间的差异,使这些差异对上层的查询过程透明。除了解析外键定义之外,存储引擎不会解析 SQL,不同存储引擎之间也不会相互通信,而只是响应上层的服务器请求。

6.了解MySQL中的MVCC是什么?

发生率:★★★

MVCC即多版本并发控制,很多时候避免了加锁,多是实现非阻塞的读操作,写操作只锁定必要的行。

MVCC 的实现方式是在每行记录后面存储两个隐藏列,一个是该行的创建时间,一个是该行的过期时间。不过存储的并不是实际的时间值,而是系统版本号。每次启动新的事务时,系统版本号都会自动增加。事务启动时的系统版本号会作为事务版本号,用来和查询到的每行记录的版本号进行比较。

MVCC只能工作在READ和READ only两种隔离级别下,因为READ总是读取最新的数据行,而不是符合当前事务版本的数据行,并且所有读取的行都会被锁定。

7. 相对于 MySQL 的优势

发生率:★★★★

8. 与 MySQL 的一些区别

发生率:★★★★

这个发生的可能性其实还是比较大的,你只要说几点就可以了。

MySQL 不支持地理数据类型。

PG从9.2开始支持json数据类型,相比MySQL,PG对json的支持更加先进,拥有一些json特有的操作符和函数,使得搜索json文本非常高效。从9.4开始,json数据可以以二进制形式存储,并且支持在该列上建立全文索引(GIN索引),从而可以在json文档中快速搜索。

MySQL 从 5.7 开始支持 json 数据类型,比 PG 晚,也可以在 json 列上建立索引,但对 json 相关函数的支持有限,不支持对 json 列建立全文索引,由于 MySQL 对 SQL 支持的限制,MySQL 并不是存储和处理 json 数据的好选择。

二维码
扫一扫在手机端查看

本文链接:https://by928.com/3291.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线