面试

数据库

三大范式

  1. 第一范式1NF:数据库表中所有字段不可再分
  2. 第一范式2NF:在第一范式基础上,表中所有字段都完全依赖于主键,不存在部分依赖
  3. 第一范式2NF:在第二范式基础上,表中所有字段都直接依赖于主键,不存在间接依赖(传递依赖)

索引类型

  • 按底层数据结构划分:
    • B-Tree索引
    • 哈希索引
    • R-Tree索引
    • 全文索引
  • 按数据存储方式划分
    • 聚簇索引
    • 非聚簇索引
  • 按应用类型划分
    • 主键索引
    • 普通索引
    • 唯一索引:用于保证列值唯一
    • 联合索引:多个列组成一个索引
    • 覆盖索引:组成索引的字段覆盖了需要查询的字段
    • 全文索引

事务中出现的问题

  • 脏读:事务A先修改再回滚,事务B在事务A回滚之前读,读到的就是脏数据
  • 丢失修改:事务A和事务B同时读取并修改一个数据(例如A=A-1),其中一个事务的修改会被覆盖,从而丢失
  • 不可重复读:事务A多次读一个数据,事务B在中间修改删除数据导致事务A前后读取的数据不一致
  • 幻读:事务A多次读一个数据,事务B在中间插入数据导致事务A读到的数据变多

隔离级别

  • 读取未提交:可能导致脏读、幻读、不可重复读
  • 读取已提交:可能导致幻读、不可重复读
  • 可重复读:可能导致幻读
  • 串行化: