面试-MYSQL基础(小厂实习)

1.一条SQL语句在Mysql中的执行过程

1.通过连接器期限权限。

2.再通过分析器进行词法分析与语法分析,构建解析树。

3.再交由优化器选择合适的索引和表连接顺序,选择一个最佳的执行计划。

4.最后再由执行器将查询结果返回给客户端。

2.Mysql的存储引擎有哪些?有什么区别?
1.InnoDB

1.支持事务、外键、行级锁。

2.适合高并发情况。

2.MyISAM

1.不支持事务和外键,支持表级锁。

2.适合读取多、更新少的情况,如数据仓库。

3.Memory

1.将数据存储在内存中,读取速度快。

2.适合做缓存。

3.Mysql的索引类型有哪些?
从索引性质上分:

1.主键索引

每个表只能有一个主键索引,且主键值不能为NUll

2.唯一索引

唯一索引允许NULL值

3.联合索引

由多个列组成的索引,适用于多列的查询条件

4.普通索引

一般指非主键索引且非唯一索引

5.全文索引

6.空间索引

从B+索引角度上分:

1.聚簇索引

叶子节点存储完整的数据行数据。

2.非聚簇索引

叶子节点仅保存索引字段和主键的值。

从数据结构角度上分:

1.B+树索引

通过树形结构存储数据,适用于范围查询和精确查询,支持有序数据的快速查找、排序和聚合操作。是Mysql默认的索引类型,常用于InnoDB和MyISAM引擎。

2.哈希索引

基于哈希表的结构,适用于等值查询,查询速度非常快,但不支持范围查询。哈希索引不存储数据的顺序,常用于Memory引擎。

3.R-树索引

4.倒排索引

4.Mysql中的回表是什么?

是指在使用非聚簇索引作为条件查询时,由于非聚簇索引只存储了索引字段的值和对应的主键值,无法得到其他数据。如果要查询数据行中其他的数据,需要根据主键去聚簇索引查找完整的数据行。

5.Mysql索引的最左前缀匹配原则时什么?

在使用联合索引时,查询条件必须从索引的最左侧开始匹配。如果一个联合索引包含多个列,查询条件必须包含第一个列的条件,然后是第二个列,以此类推。

6.Mysql的覆盖索引

是指非聚簇索引中包含了查询所需的所有字段,从而时查询可以仅通过访问非聚簇索引而不需要访问实际的表数据。

7.Mysql中的索引下推

是针对联合索引的,它是在存储引擎层根据索引条件先进行过滤,然后再进行回表,来减少回表次数。

8.在Mysql中建索引时需要考虑哪些情况?

1.索引不是越多越好,索引会占用空间,影响增删改的效率

2.对于字段中的值有大量重复的不要建索引

3.对于一些长字段不能建索引

4.当数据表的修改频率远大于查询频率时

5.频繁作为查询条件的字段应该建索引

6.对经常在order by、group by、distinct后面的字段建立索引

9.MySQL中索引失效的情况

1.使用了联合索引却不符合最左前缀匹配原则

2.索引中使用了运算

3.索引使用了函数

4.like的随意使用:索引是从左侧开始查找的,占位符放在了最左边开头

5.or的随意使用

等等

10.如何排查索引效果

通过在查询前加上EXPLAIN,可以查看Mysql选择的执行计划,了解是否使用了索引、使用了哪个索引、估算的行数等信息。

主要观察EXPLAIN结果以下几点:

type(访问类型):index或range表示使用了索引

key(使用的索引):NULL说明未使用

rows(扫描的行数)

11.Mysql是如何实现事务的?

主要是通过锁、Redo log、Undo log、MVCC来实现事务

锁:使用数据并发修改的控制,满足事务的隔离性。

Redo log:记录事务对数据库的所有修改,当Mysql发生宕机或崩溃时,通过重做就可以恢复数据,满足事务的持久性。

Undo log:记录事务的反向操作,简单来说就是保存数据的历史版本,用于事务的回滚,使得事务执行失败后可以恢复到之前的样子,实现原子性和隔离性。

MVCC:满足了非锁定读的需求,提高了并发度,实现了读已提交和可重复读两种隔离级别,实现了事务的隔离性。

12.Mysql中的长事务可能会导致哪些问题?

1.长时间的锁竞争,阻塞资源:

2.死锁风险

因为多个事务可能在互相等待对方释放锁,导致系统无法继续执行

3.回滚导致时间浪费

13.Mysql中如何进行SQL调优?

主要是通过观察慢SQL,然后利用EXPLAIN分析查询语句的执行计划

1.利用联合索引进行覆盖索引的优化,避免回表的发生

2.避免select *,只查询必要字段

3.不对无索引字段进行排序

4.避免%like,导致全表扫描

等等

14.事务隔离级别有哪些?

1.读未提交

可能会导致脏读

2.读已提交

可能导致不可重复读

3.可重复读(mysql默认级别)

可能会导致幻读

4.串行化

15.Mysql的主从同步机制

用于将主数据库上的数据复制到一个或多个数据库中。

主要是通过二进制日志(binlog)实现数据的复制。主数据库在执行写操作时,会将这些操作记录到binlog中,然后推送给从数据库,从数据库重放对应的日志即可完成复制。

16.Mysql中的MVCC是什么?

MVCC(多版本并发控制)是一种并发控制机制,允许多个事务同时读取和写入数据库,而无需互相等待,从而提高数据库的并发性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值