2021年MySQL面试题55道

本文整理了55道关于MySQL的面试题,涵盖了MyISAM与InnoDB引擎的区别、事务隔离级别、索引类型、存储过程、数据类型、查询优化等多个方面,旨在帮助面试者了解MySQL的核心知识点和最佳实践。
摘要由CSDN通过智能技术生成

文章目录


前言

作为应届生,处于找工作中ing。今年2月份刚刚整理出来的面试题,时间比较赶就没有按照模块分类排序了。总而言之,顺序比较乱,希望大家耐着性子 看。如果实在介意,评论告知,我会视情况作修改的。另外如果大家觉得我找的答案不够清晰,欢迎私信或者评论只出,我看到都会去修改的!


面试题系列文章传送门

2021年后端开发面试题整理合集


MySQL面试题内容

1. 简述在MySQL数据库中引擎MyISAM和InnoDB的区别?

  1. 存储结构方面:MyISAM每个MyISAM在磁盘上存储成三个文件.frm文件存储表定义、数据文件的扩展名为.MYD、索引文件的扩展名是.MYI;InnoDB所有的表都保存在同一个数据文件中,表的大小只受限于操作系统文件的大小,一般为2GB。
  2. 存储空间方面:MyISAM可被压缩,存储空间较小。支持三种不同的存储格式:静态表、动态表、压缩表;InnoDB需要更多的内存和存储,它会在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。
  3. 事务支持方面:MyISAM强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持;InnoDB提供事务支持事务。
  4. 表锁差异方面:MyISAM只支持表级锁;InnoDB支持事务和行级锁。
  5. 表主键:MyISAM允许没有任何索引和主键的表存在,索引都是保存行的地址。InnoDB如果没有设定主键或者非空唯一索引,就会自动生成一个6字节的主键。
  6. 增删改查操作方面:如果执行大量的SELECT,MyISAM是更好的选择。如果执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表。
  7. 外键方面:MyISAM不支持;InnoDB支持。

2. MySQL中有哪几种锁?

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

3. 什么是通用SQL函数?

CONCAT(A, B): 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。
FORMAT(X, D): 格式化数字 X 到 D 有效数字。
CURRDATE():CURRTIME():返回当前日期或时间。
NOW():将当前日期和时间作为一个值返回。
MONTH():DAY(),YEAR(),WEEK(),WEEKDAY() :从日期值中提取给定数据。
HOUR():MINUTE(),SECOND() : 从时间值中提取给定数据。
DATEDIFF(A,B):确定两个日期之间的差异,通常用于计算年龄
SUBTIMES(A,B):确定两次之间的差异。
FROMDAYS(INT): 将整数天数转换为日期值。

4. MySQL中有哪些不同的表格?

MyISAM、Heap、Merge、INNODB、ISAM

5. CHAR和VARCHAR的区别?

CHAR 和 VARCHAR 类型在存储和检索方面有所不同
CHAR 列长度固定为创建表时声明的长度,长度值范围是1到255当CHAR值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。

6. MySQL中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?

read uncommited :读到未提交数据
read committed:脏读,不可重复读
repeatable read:可重复读
serializable :串行事务

7. myisamchk是用来做什么的?

它用来压缩 MyISAM 表,这减少了磁盘或内存使用。

8. 主键和候选键有什么区别?

表格的每一行都由主键唯一标识,一个表只有一个主键,主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。

9. 如果一个表有一列定义为TIMESTAMP,将发生什么?

每当行被更改时,时间戳字段将获取当前时间戳。

10. 列设置为AUTO INCREMENT时,如果在表中达到最大值,会发生什么情况?

它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。

11. MySQL 数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?

设计良好的数据库结构,允许部分数据冗余,尽量避免 join 查询,提高效率。
选择合适的表字段数据类型和存储引擎,适当的添加索引。
MySQL 库主从读写分离。
找规律分表,减少单表中的数据量提高查询速度。
添加缓存机制,比如 memcached,apc 等。
不经常改动的页面,生成静态页面。
书写高效率的SQL。比如SELECT * FROM TABEL改为SELECT field_1,field_2, field_3 FROM TABLE.

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个巨大的怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值