admin管理员组

文章数量:1530059

数据库面试知识点汇总

1.简述关系型与非关系型数据库的区别?

  1. 关系型数据库是依据关系模型来创建的数据库,所谓关系模型就是“一对一”、“一对多”、“对多对”等。常见的关系型数据库有Oracle、MySQL、SQL Server等。
  2. 非关系型数据库主要基于“非关系型模型”,其中非关系型模型有:列模型、键值对模型、文档类模型。比如redis属于键值对模型。

关系型数据库的优点:

  1. 易于维护:都是使用表结构,格式一致。
  2. 使用方便:SQL语言通用,可用于复杂查询。
  3. 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。

关系型数据库的缺点:

  1. 读写性能比较差,尤其是海量数据的高效率读写。
  2. 固定的表结构,灵活度稍欠。
  3. 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

非关系型数据库的优点:

  1. 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
  2. 速度快:nosql可使用硬盘或者随机存储器作为载体,关系型数据库只能使用硬盘。
  3. 高拓展性
  4. 成本低:nosql数据库部署简单,基本都是开源软件。

非关系型数据库的缺点:

  1. 不提供sql支持,学习和使用成本较高。
  2. 无事务处理。
  3. 数据结构相对复杂,复杂查询方面稍欠。

2.简述为什么需要使用索引?

  1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。
  2. 可以加快数据的检索速度,是创建索引的主要原因。
  3. 减少磁盘IO,可以直接定位。
  4. 通过使用索引,可以在查询过程中,使用优化隐藏器,提高系统的性能
  5. 加速表与表的连接,特别是在实现数据的参考完整性方面特别有意义。

缺点:

  1. 创建索引和维护索引需要耗费时间,时间随着数据量的增加而增加。
  2. 索引需要占用物理空间,特别是聚簇索引,需要较大的空间。
  3. 当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。

3.简述数据库索引采用B+树不采用B树的原因?

  1. B+树更便于遍历:由于B+树的数据都存储在叶子结点中,分支结点均为索引,方便扫库,只需要扫一遍叶子结点即可,但是B树因为其分支结点同样存储着数据,我们要找到具体的数据,需要进行一次中序遍历按序来扫,所以B+树更加适合在区间查询的情况,所以通常B+树用于数据库索引。
  2. B+树的磁盘读写代价更低:B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
  3. B+树的查询效率更加稳定:由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。
  4. B+树更适合基于范围的查询 :B树在提高了IO性能的同时并没有解决元素遍历的效率低下的问题,正是为了解决这个问题,B+树应用而生。B+树只需要去遍历叶子节点就可以实现整棵树的遍历。而且在数据库中基于范围的查询是非常频繁的,而B树不支持这样的操作或者说效率太低。

4.简述MySQL索引有哪些类型?

  1. 普通索引:最基本的索引,没有任何限制。
  2. 唯一索引:索引列的值必须唯一,但可以有空值。可以创建组合索引,则列值的组合必须唯一。
  3. 主键索引:是特殊的唯一索引,不可以有空值,且表中只存在一个该值。
  4. 组合索引:多列值组成一个索引,用于组合搜索,效率高于索引合并。
  5. 全文索引:对文本的内容进行分词,进行搜索。

5.简述什么是聚簇索引及其优缺点?

  1. 聚簇索引并不是单独的索引类型,而是一种数据存储方式。
  2. B+树索引分为聚簇索引和非聚簇索引,主键索引就是聚簇索引的一种,非聚簇索引有复合索引、前缀索引、唯一索引。
  3. 在innodb存储引擎中,表数据本身就是按B+树组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚簇索引的叶子节点成为数据页。
  4. Innodb通过主键聚集数据,如果没有定义主键,innodb会选择非空的唯一索引代替。如果没有这样的索引,innodb会隐式的定义一个主键来作为聚簇索引。
  5. 非聚簇索引又称为辅助索引,InnoDB访问数据需要两次查找,辅助索引叶子节点存储的不再是行的物理位置,而是主键值。通过辅助索引首先找到的是主键值,再通过主键值找到数据行的数据页,再通过数据页中的Page Directory找到数据行。
  6. Innodb辅助索引的叶子节点并不包含行记录的全部数据,叶子节点除了包含键值外,还包含了相应行数据的聚簇索引键。一张表可有多个二级索引。

优点:

  1. 数据访问更快,因为聚簇索引将索引和数据保存在同一个B+树中,因此从聚簇索引中获取数据比非聚簇索引更快。
  2. 聚簇索引对于主键的排序查找和范围查找速度非常快。

缺点:

  1. 插入速度严重依赖于插

本文标签: 面试题常见数据库