1 Star 0 Fork 31

霍月龙 / Ebooks

forked from dearHaoGeGe / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
2022年最全MySQL面试题附答案解析大汇总.md 7.91 KB
一键复制 编辑 原始数据 按行查看 历史

2022年最全MySQL面试题附答案解析大汇总

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

MySQL

题1:B 树和 B+ 树有什么区别?

二叉树是指任何节点的左子节点的键值都小于当前节点的键值,右子节点的键值都大于当前节点的键值。

平衡二叉树/AVL树当二叉树非常极端,变成一个链表后,它就没有了二叉树的相关优秀性质了。所以在insert节点的时候,需要不断的旋转,来使二叉树平衡,最终使得其查询效率最高。调整一共分为四种情况:LL、RR、LR、RL。

B-树因为数据库中大部分数据都存在于磁盘,但是IO一次磁盘的代价相对来说比较大,我们需要尽可能的减少AVL树的深度,即增加每个节点的数据量。这便是B-树的由来。每一个节点称为页,也就是一个磁盘块。 B树相对于平衡二叉树,每个节点存储了更多的键值(key)和数据(data),并且每个节点拥有更多的子节点。

B+树是B-树的变形,相对于B-树来说,B+树最主要的不同之处就是其非叶子节点上是不存储数据的,数据全在叶子节点存储。这就意味着B+树比B-树更胖。因为B+树索引的所有数据均存储在叶子节点,而且数据是按照顺序排列的。那么B+树使得范围查找,排序查找,分组查找以及去重查找变得异常简单。而B树因为数据分散在各个节点,要实现这一点是很不容易的。

1、B树,每个节点都存储key和data,所有节点组成这棵树,并且叶子节点指针为nul,叶子结点不包含任何关键字信息。

2、B+树,所有的叶子结点中包含了全部关键字的信息,及指向含有这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大的顺序链接

所有的非终端结点可以看成是索引部分,结点中仅含有其子树根结点中最大(或最小)关键字。(而B树的非终节点也包含需要查找的有效信息)。

题2:MySQL 中 BLOB 和 TEXT 有什么区别?

BLOB是一个二进制对象,可以容纳可变数量的数据。TEXT是一个不区分大小写的BLOB。

BLOB和TEXT类型之间的唯一区别在于对BLOB值进行排序和比较时区分大小写,对TEXT值不区分大小写。

题3:key 和 index 有什么区别?

key是数据库的物理结构,它包含两层意义和作用,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括primary key、unique key、foreign key等。

index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文本索引等;

题4:MySQL 中都有哪些触发器?

MySQL数据库中有六种触发器:

Before Insert

After Insert

Before Update

After Update

Before Delete

After Delete

题5:在什么情况下应少创建或不创建索引?

1、表记录太少;

2、经常插入、删除、修改的表;

3、数据重复且分布平均的表字段,假如一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种表A字段建索引一般不会提高数据库的查询速度。

4、经常和主字段一块查询但主字段索引值比较多的表字段,

题6:MySQL 中行级锁都有哪些优缺点?

行级锁的优点

1)在许多线程请求访问不同的行时减少冲突锁。

2)事务回滚时减少改变数据。

3)可以长时间对单一的行数据加锁。

行级锁的缺点

1)比页级或表级锁定占用更多的内存。

2)当大量表中使用行级锁时,比页级锁或表级锁占用更多的内存。

3)如果需要频繁对大部分数据使用GROUP BY分组操作或者需要频繁扫描整个表时,明显比其它锁慢很多。

4)使用高级别锁时更方便的支持各种不同的类型应用程序,因为这种锁开销比行级锁要小很多。

题7:MySQL 中 InnoDB 引擎 4大特性,了解过吗?

插入缓冲(insert buffer)

二次写(double write)

自适应哈希索引(ahi)

预读(read ahead)

题8:MySQL 中 limit 1000000 加载很慢的,如何解决?

方式一: 如果id是连续的,可以这样,返回上次查询的最大记录(偏移量),再往下limit

select idname from employee where id>1000000 limit 10

方式二: 在业务允许的情况下限制页数:

建议跟业务讨论,有没有必要查这么后的分页啦。因为绝大多数用户都不会往后翻太多页。

方式三: order by + 索引(id为索引)

select idname from employee order by id  limit 1000000,10

方式四: 利用延迟关联或者子查询优化超多分页场景。(先快速定位需要获取的id段,然后再关联)

SELECT a.* FROM employee a, (select id from employee where 条件 LIMIT 1000000,10 ) b where a.id = b.id

题9:MySQL 中内连接、左连接、右连接有什么区别?

1)内连接,显示两个表中有关联的所有数据;

2)左链接,以左表为参照,显示左表所有数据,右表中没有则显示null;

3)右链接,以右表为参照,显示右表所有数据,左表中没有则显示null。

题10:什么是表分区?

表分区,是指根据一定规则,将数据库中的一张表分解成多个更小的,容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成。

题11:超键候选键主键外键分别是什么

题12:mysql-中有哪些非标准字符串类型

题13:数据库引擎都有哪些

题14:mysql-中-having-和-where-有什么区别

题15:什么是-mvcc有哪些优势

题16:什么是存储过程如何调用

题17:-mysql-中-binlog-有几种录入格式分别有什么区别

题18:mysql-中-varchar(50)-中-50-是什么涵义

题19:mysql-事务都有哪些特性

题20:什么是脏读不可重复读和幻读

题21:mysql-中自增主键可能会遇到什么问题

题22:mysql-中-union-和-union-all-有什么区别

题23:如何判断-mysql-是否支持分区

题24:mysql-中都有哪些锁

题25:mysql-假设一天几万以上的增量预计运维三年怎么优化

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/huo-yuelong/ebooks.git
git@gitee.com:huo-yuelong/ebooks.git
huo-yuelong
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891