MySQL常见面试题

本文介绍了MySQL中的常见面试题,包括索引的概念和类型(如Hash索引与B+树索引的区别),聚簇索引的定义,ACID特性,事务的四种隔离级别,以及MySQL支持的存储引擎。重点讨论了InnoDB存储引擎的特性和与其他引擎(如MyISAM)的对比。
摘要由CSDN通过智能技术生成


mysql学习-day05 事务

MySQL常见面试题

1.什么是索引

索引是一种数据结构,可以帮助我们快速的进行数据的查找. 	

2.索引是个什么样的数据结构呢?

索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有
Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现
为:B+树索引. 

3. Hash索引和B+树所有有什么区别或者说优劣呢?

Hash索引和B+树所有有什么区别或者说优劣呢?

hash索引底层就是hash表,进行查找时,调用一次hash函数就可以获取到相应的键值,之后进行回表查询获得实际数据.B+树底层实现是多路平衡查找树.对于每一次的查询都是从根节点出发,查找到叶子节点方可以获得所查键值,然后根据查询判断是否需要回表查询数据.

  • hash索引进行等值查询更快(一般情况下),但是却无法进行范围查询.

4. 什么是聚簇索引?

在B+树的索引中,叶子节点可能存储了当前的key,也可能存储了当前的key
值以及整行的数据,这就是聚簇索引和非聚簇索引.InnoDB,只有主键索
引是聚簇索引,如果没有主键,则挑选一个唯一键建立聚簇索引.如果没有唯一
键,则隐式的生成一个键来建立聚簇索引.

当查询使用聚簇索引时,在对应的叶子节点,可以获取到整行数据,因此不用再
次进行回表查询.

5. ACID

A=Atomicity

原子性,就是上面说的,要么全部成功,要么全部失败.不可能只执行一部分操作.

C=Consistency

系统(数据库)总是从一个一致性的状态转移到另一个一致性的状态,不会存在中
间状态.

I=Isolation

隔离性: 通常来说:一个事务在完全提交之前,对其他事务是不可见的.注意前面
的通常来说加了红色,意味着有例外情况.

D=Durability

持久性,一旦事务提交,那么就永远是这样子了,哪怕系统崩溃也不会影响到这个
事务的结果.

6. 事务隔离级别

 MySQL的四种隔离级别如下:
- 未提交读(READ UNCOMMITTED)
这个隔离级别下,其他事务可以看到本事务没有提交的部分修改.因此会造成脏
读的问题(读取到了其他事务未提交的部分,而之后该事务进行了回滚).
这个级别的性能没有足够大的优势,但是又有很多的问题,因此很少使用.

- 已提交读(READ COMMITTED)

其他事务只能读取到本事务已经提交的部分.这个隔离级别有不可重复读的问
题,在同一个事务内的两次读取,拿到的结果竟然不一样,因为另外一个事务对数
据进行了修改.

- REPEATABLE READ(可重复读)

可重复读隔离级别解决了上面不可重复读的问题(看名字也知道),但是仍然有一
个新问题,就是 幻读,当你读取id> 10 的数据行时,对涉及到的所有行加上了
读锁,此时例外一个事务新插入了一条id=11的数据,因为是新插入的,所以不会
触发上面的锁的排斥,那么进行本事务进行下一次的查询时会发现有一条id=11
的数据,而上次的查询操作并没有获取到,再进行插入就会有主键冲突的问题.

- SERIALIZABLE(可串行化)

这是最高的隔离级别,可以解决上面提到的所有问题,因为他强制将所以的操作
串行执行,这会导致并发性能极速下降,因此也不是很常用.

InnoDB默认使用的是可重复读隔离级别. 

7. MySQL支持哪些存储引擎?

MySQL支持多种存储引擎,比如InnoDB,MyISAM,Memory,Archive等等.在大多数的情况下,直接选择使用InnoDB引擎都是最合适的,InnoDB也是MySQL的默认存储引擎.

InnoDB和MyISAM有什么区别?

  • InnoDB支持事物,而MyISAM不支持事物
  • InnoDB支持行级锁,而MyISAM支持表级锁
  • InnoDB支持MVCC, 而MyISAM不支持
  • InnoDB支持外键,而MyISAM不支持
  • InnoDB不支持全文索引,而MyISAM支持。

总结

以上就是mysql常见面试题啦,希望能够帮到大家

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值