网站优化

网站优化

Products

当前位置:首页 > 网站优化 >

学习MySQL面试题,助你轻松应对数据库面试,获得心仪职位!

GG网络技术分享 2025-11-22 22:33 2


哈喽,巨大家优良!今天我来给巨大家分享一些MySQL面试题,帮巨大家轻巧松应对数据库面试,得到心仪的职位!

数据库并发问题

数据库并发会带来脏读、 幻读、丢弃geng改、不可再来一次读这四个常见问题,其中:

1.海量数据下 主键怎么设计?

2.查询课程编号为“”且课程成绩在80分以上的学生的学号和姓名

3.查询随便哪个一门课程成绩在70分以上的姓名、 课程名称和分数

4. Drop 命令从数据库中删除表,全部的数据行,索引和权限也会被删除,全部的DML触发器也不会被触发,这玩意儿命令也不Neng回滚。

5.水平分表:取模分表就属于随机分表,而时候维度分表则属于连续分表。怎么设计优良垂直拆分, 我的觉得Neng:将不常用的字段单独拆分到再说一个一张 表. 将巨大文本的字段单独拆分到再说一个一张 表, 将不三天两头修改的字段放在同一张表中,将三天两头改变的字段放在另一张表中。对于海量用户场景,Neng考虑取模分表,数据相对比比kan均匀,不轻巧松出现烫点和并发访问的瓶颈。

MySQL记录存储

MySQL的数据是怎么组织的?

Cname:课程名称

SC成绩表

MySQL数据库面试题

Student学生表

也就是我们常说的事务ACID,这样才Neng保证事务中数据的正确性。

1.查询全部课程成绩细小于60的同学的学号、姓名:

Tname:教师名字

Ssex:学生性别

Sage:学生年龄

Score:成绩

索引优化

在进行索引优化时得注意哪些问题?

回滚日志作用:Neng够在发生错误或者用户施行 ROLLBACK 时给回滚相关的信息, 在整个系统发生崩溃、数据库进程直接被杀死后当用户 启动数据库进程时还Neng够立刻通过查询回滚日志将之前未完成的事务进行回滚,这也就需要回滚日志非...不可先于数据持久化到磁盘上,是我们需要先写日志后写数据库的基本上原因。

1.查询每门课程的平均成绩, 后来啊按平均成绩升序排序,平均成绩相一边,按课程号降序排列

2.查询姓“张”的学生名单

3.查询各科成绩Zui高大和Zui矮小的分:以如下的形式kan得出来:课程ID,Zui高大分,Zui矮小分

4.统计下列各科成绩,各分数段人数:课程ID,课程名称,,,,

5.将学生表中的姓名 张三修改为张巨大山

B树

B树非...不可用中序遍历的方法按序扫库,而B+树直接从叶子结点挨个扫一遍就完了B+树支持range-query非常方便,而B树不支持,这是数据库选用B+树的Zui基本上原因。

B+tree的查询效率geng加稳稳当当:由于内部结点并不是到头来指向文件内容的结点, 而只是叶子结点中关键字的索引,所以随便哪个关键字的查找非...不可走一条从根结点到叶子结点的路。全部关键字查询的路径长远度相同,弄得每一个数据的查询效率相当;

InnoDB加锁的过程是怎么实现的?常见锁问题有那些个?

Ru果一个索引包含全部需要查询的字段的值,我们就称之为“覆盖索引”。

1.查询同名同姓的学生名单, 并统计同名人数

2.插入数据

3.删除“”同学的“”课程的成绩

4.查询选修“鲁迅”老师所授课程的学生中,成绩Zui高大的学生姓名及其成绩

Cid:课程编号

Sid:学号

隔离级别

隔离级别脏读不可再来一次读幻影读

READ-UNCOMMITTED 未提交读

REPEATABLE-READ 再来一次读

SERIALIZABLE 可串行化读

InnoDB支持事务平安,InnoDB支持表、行级锁,而MyISAM支持表级锁;

B+tree的特点

B+tree的磁盘读写代价geng矮小,B+tree的查询效率geng加稳稳当当 数据库索引采用B+树而不是B树的基本上原因:B+树只要遍历叶子节点就Neng实现整棵树的遍历,而且在数据库中基于范围的查询是非常频繁的,而B树只Neng中序遍历全部节点,效率太矮小。

.持久性

MySQL怎么高大效实现数据冗余部署

B+tree的磁盘读写代价geng矮小:B+tree的内部结点并没有指向关键字具体信息的指针,所以呢其内部结点相对B 树geng细小。Ru果把全部同一内部结点的关键字存放在同一块盘中,那么盘块所Neng容纳的关键字数量也越许多。一次性读入内存中的需要查找的关键字也就越许多, 相对来说IO读写次数也就少许些了;

视图

视图是虚拟的表,与包含数据的表不一样,视图只包含用时动态检索数据的查询;不包含随便哪个列或数据。用视图Neng简化麻烦的 sql 操作, 隐藏具体的细节,护着数据;视图创建后Neng用与表相同的方式利用它们。

Truncate 删除表中的全部数据, 这玩意儿操作不Neng回滚,也不会触发这玩意儿表上的触发器,TRUNCATE比Deletegeng迅速,占用的地方geng细小。

不可再来一次读

不可再来一次读:T2 读取一个数据,然后T1 对该数据Zuo了修改。Ru果 T2 读取这玩意儿数据,此时读取的后来啊和第一次读取的后来啊不同。

InnoDB行级锁、间隙锁、表级锁怎么实现的?

分库与分表的目的在于,减细小数据库的单库单表负担,搞优良查询性Neng,缩短暂查询时候。

1.求选了课程的学生人数:

2.查询学过“”并且也学过编号“”课程的同学的学号、 姓名

3.查询学过“鲁迅”老师所教的全部课的同学的学号、姓名

4.把“SC”表中“鲁迅”老师教的课的成绩dougeng改为此课程的平均成绩,

5.查询不同老师所教不同课程平均分从高大到矮小kan得出来

存储引擎层

存储引擎层负责数据的存储和提取 。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等优良几个存储引擎。眼下Zui常用的存储引擎是InnoDB,它从MySQL .5版本开头成为了默认的存储引擎。

查询课程名称为“英语”, 且分数不到60的学生名字和分数

1.向SC表中插入一些记录,这些个记录要求符合以下条件:没有上过编号“”课程的同学学号、002号课的平均成绩

2.沉Zuo日志Redo log怎么实现事务持久性?

3.查询如下课程成绩第3名到第6名的学生成绩单:数学, 语文,英语

查询至少许有一门课与学号为同学所学相同的同学的学号和姓名

MVCC是啥?怎么实现许多版本控制?怎么解决写冲突?

而在 MySQL 中, 恢复机制是通过回滚日志实现的,全部事务进行的修改dou会先记录到这玩意儿回滚日志中,然后在对数据库中的对应行进行写入。当事务Yi经被提交之后就无法 回滚了。

undo log怎么清理,为何InnoDB select count这么磨蹭?

不可再来一次读的沉点是修改,幻读的沉点在于新鲜增或者删除。

标签:

提交需求或反馈

Demand feedback