跳到主要内容

关系型数据库

1. 常见开源、免费关系型数据库

当我们提及「数据库」时,通常指的是关系型数据库(Relational Database)

这里列举一些常见的开源、免费、关系型数据库

  1. MySQL
  2. MariaDB
  3. PostgreSQL
  4. SQLite

除了关系性数据库外,还有非关系型数据库(NoSQL),我们将在 NoSQL 数据库 中介绍。

2. 高频考点

数据存储作为软件开发的重要一环,关于数据库的内容,在面试中也一直是**高频考点**。

另外虽然主流的开源数据库有很多,并且各自的使用场景也十分广泛。但是在实际面试中,MySQL 一直是被提问最多的数据库,需要重点复习。

  1. 事务
    1. 事务的四大特性 - ACID
    2. 事务的隔离级别
    3. 什么是脏读、幻读、不可重复读
  2. 索引
    1. 索引的实现原理 - B+ 树
    2. 聚簇索引和非聚簇索引
    3. 索引的类型
    4. 索引的优化
    1. 锁的类型
    2. 锁的优化
    3. 死锁的产生原因与解决方法
  3. 查询优化
    1. 查询优化的原理
    2. Join 的使用与基本原理
  4. 扩展
    1. 数据库集群的原理 - 主从复制、读写分离
    2. 数据库分库分表的原理
  5. MySQL 的存储引擎
    1. InnoDB 与 MyISAM 的区别
    2. InnoDB 的索引实现
    3. MyISAM 的索引实现
  6. 维护
    1. 数据库的备份与恢复
    2. Binlog 的原理与使用

3. 高频面试题

3.1. 事务

  1. 为什么需要事务,解决了什么问题,如何解决的?
  2. 事务的四大特性是什么?
  3. 事务的隔离级别有哪些?
  4. 什么是脏读、幻读、不可重复读,如何解决?

3.2. 索引

  1. 介绍一下 B+ 树 的实现原理,与 B 树 有什么区别?
  2. 聚簇索引和非聚簇索引有什么区别?

3.3. 锁

  1. MySQL 中行锁、表锁、间隙锁、意向锁的含义与使用场景?
  2. 死锁的产生原因与解决方法?

3.4. 扩展

  1. MySQL 如何进行集群化部署,原理是什么?
  2. 什么时候需要对数据库进行分库、分表?