栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

MySQL数据库面试题总结(1)

MySQL数据库面试题总结(1)

今天内容

国庆假期已经结束了,没错我们只放了三天假!所以我们该收心还是要开始收心啦,毕竟现在不努力以后就要加倍努力了~所以我们还是接着之前的内容继续往后面学习,今天来看看关于数据库方面的面试题吧!

面试问题总结
  1. MySQL索引的数据结构
    1. 由于MySQL数据库引擎在MySQL5.1版本之后默认为InnoDB,所以底层数据结构用到的是B+树实现的,且B+树的搜索效率可以达到二分法的性能
    2. 之所以用B+树而不用B树,是因为B+树不仅支持随机检索,还支持顺序检索,同时B+树的空间利用率更高,IO次数较少,磁盘的读写代价会更低;同时B+树的查询效率更加稳定!

  1. 如何去创建索引
    1. ALTER TABLE 表名 ADD 索引类型 [索引名](字段名)
    2. eg:ALTER TABLE student ADD unique(student_id)

  1. 常见索引的分类
    1. 非聚集索引
      1. 唯一索引(UNIQUE):不可以出现相同的值,可以用NULL
      2. 主键索引(PRIMARY KEY):不允许出现相同的值
      3. 普通索引(INDEX):允许出现相同的索引内容
      4. 全文索引(FULTEXT INDEX):可以针对值中的某个单词,但是效率确实不大行
    2. 聚集索引:数据行的物理顺序与列值逻辑顺序相同,而且一个表中只能拥有一个聚集索引
    3. 组合索引:将多个字段建到一个索引里,列值的组合必须唯一!

  1. 聚簇索引和非聚簇索引的了解与区别
    1. 聚簇索引:把数据行按照一定顺序一个一个紧密排列在一起存储,是一种数据存储方式。使用场景:InnoDB
    2. 非聚簇索引:也叫二级索引,也就是需要两次B-Tree的查询。使用场景:MyISAM
    3. 区别:
      1. 两者的数据存储方式不同,非聚簇索引需要先查询一遍索引文件,得到索引,再根据索引去获取数据,聚簇索引直接就可以拿到数据
      2. 二级索引查询也不同,聚簇索引在二级索引进行查询时,需要先通过B+树得到数据的主键再去拿数据,所以会更加的消耗性能!

  1. 索引使用策略以及失效情况的说明
    1. 使用策略:
      1. 如果是多列符合索引,就需要遵循最佳左前缀法则,查询的时候要从索引的最左前列开始,而且不能跳查
      2. 遵循最好全值匹配,需要看索引的建立方式
    2. 失效情况:
      1. 对于索引的列没有进行操作时,就有可能导致索引失效
      2. 使用等于或者不等于的时候也有可能会导致索引失效
      3. 尽量减少使用select *操作,需要按需进行操作,不然也有可能会导致索引失效
      4. 模糊查询如果使用不当,也可能会导致全表查询,从而导致索引失效

  1. B树、B+树和二叉树的区别
    1. B树:一种多路搜索树(并不是二叉树)
      1. 特征:每一层的节点数目非常多,层数很少,目的就是为了减少磁盘的IO次数,从而提高查询性能。而它又是一种多路自平衡树,每个节点最多包含k个孩子,k为B树的阶!
      2. 特点:每个结点都会有Data域,只要找到匹配元素即可!无论匹配元素处于中间节点还是叶子节点,查询性能并不是很稳定!
      3. 应用场景:MongoDB
    2. B+树:
      1. 特征:B+树是基于B树的一种变体,有着更高的查询性能
      2. 特点:中间节点没有存储数据,只有叶子节点存放数据,其余节点用来存索引;相同数据量时此树更矮胖,查询必须查询到叶子节点,每次查找都是稳定的!
      3. 应用场景:大部分关系型数据库,如:MySQL
    3. 二叉树:
      1. 特征与特点:非叶子节点最多拥有两个子节点;而且非叶子节点的值要大于左边子节点,小于右边子节点;树左右两边的层级等级不会相差大于1;而且没有相同值的重复节点
      2. 应用场景:哈夫曼树(后面感兴趣的可以了解一下哈夫曼算法,也挺有意思的~)
      3. 平衡二叉树:数据库的索引是存储在磁盘上,磁盘IO操作比较耗时,为了提高查询效率就需要减少磁盘IO的次数,而磁盘IO次数和树的高度有关系,所以为了减少磁盘IO就需要降低树的高度,这时查找的机构就可以把二叉树变成B类的树!

  1. B+树和B树的优势
    1. 单一结点存储更多的元素,查询的IO次数更少
    2. 所有查询都要查询到子节点,查询性能更加稳定
    3. 所有的叶子节点形成有序链表,便于范围查询

  1. 红黑树和B树的区别
    1. 红黑树:多用于内部排序,也就是全部放在内存中
    2. B树:内存放不下,大部分数据是存储在外存上,IO读取磁盘数据较少,具有更快的速度

  1. SQL的执行顺序
    1. from>where>group by>having>select>order by>limit
    2. where后面不能接聚合函数,因为where在分组之前就执行了!

  1. 事务的四大特征
    1. A(Atomicity)原子性:不可分割,要么都执行,要么都失败。
    2. C(Consistency)一致性:事务完成时,数据必须一致。
    3. I(Isolation)隔离性:事务必须独立,不会相互依赖。
    4. D(Durability)持久性:事务完成后,数据库的数据修改会被永远保存,即使出现系统故障也不会丢失。

  1. MySQL是如何实现事务的
    1. 事务的四大特征:ACID
    2. 使用redolog来实现事务的一致性和持久性:其中有一个单点检查机制和双写机制(感兴趣的可以自行了解一下~)

  1. 隔离级别
    1. ISOLATION——DEFAULT:默认隔离界别
    2. ISOLATION_READ_UNCOMMITTED:读未提交,可出现脏读、不可重复读、幻读
    3. ISOLATION_READ_COMMITTED:读已提交,可能会出现不可重复读、幻读
    4. ISOLATION_REPEATABLE:可重复读,可能会出现幻读
    5. ISOLATION_SERIALIZABLE:序列化

  1. 脏读、不可重复读、幻读
    1. 脏读:一个事务能够读取到另外一个事务未提交的数据
    2. 不可重复读:一个事务内,多次读到的数据不一样
    3. 幻读:同一个事务内多次查询返回的数据集不一样

  1. MySQL数据库如何优化
    1. 优化查询:可以使用explain来查看Sql是如何执行查询语句的,从而分析你的索引是否满足需求!
    2. 优化子查询:使用连接查询去代替子查询可以提高查询效率
    3. 优化数据库表结构:添加中间表、把字段多的表进行分表等
阶段性总结

其实今天在总结数据库方面面试题的时候,我发现数据库部分涉及到的理论知识确实挺多的,而且里面涉及了不少的数据结构,原本我是想着面试的时候让你写个sql不就挺好的嘛,看来是我草率了,,,不过总结后发现其实其中的事务这一块后面也会涉及到,而且很多内容都是一样的,所以感jio这总结的还是很可以的哈哈哈,再接再厉吧兄弟盟!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号