后端面试常见题目及知识点(三)---数据库

系列文章目录

  1. 操作系统(Linux)
  2. 计算机网络
  3. 数据库
  4. 其他

数据库这块因为我本身不是特别熟悉,并且被问的次数也不多,所以相对没那么详细。

数据库

数据库的关系有哪些

  • 关系型数据库(最常用)
  • 面向文档型
  • 键值对型
  • XML型

事务的四大特性(ACID)

  • 事务:访问并可能操作各种数据项的一个数据库操作序列
  • automicity(原子性)— 一个事务要么完成要么不完成
  • consistency(一致性)— 一个事务开始前和结束后,数据库的完整性不被破坏
  • isolation(隔离性)— 允许多个事务同时执行
  • durability(持久性)— 事务执行完后,操作时永久性的

隔离性

  • 问题
    • 脏读 — 一个事务读取了另一个事务未提交的数据
    • 幻读 — 一个事务内读取了另一个事务插入的数据,导致前后不一致
      • 侧重于insert
      • 锁表才能避免
      • 如:统计所有员工的存款,此时甲新增了100元存款,前后两次不一致
    • 不可重复读 — 一个事务读取某条数据,多次读取结果不一致
      • 侧重于update和delete
      • 锁行就能避免
      • 如:读取甲的存款,两次读取之间,甲存入了100元,前后两次不一致
  • 隔离级别
    • Read uncommitted(读未提交)
      • 三种问题都可能出现
    • Read Committed(读已提交)
      • 避免了脏读,其他的无法避免
    • Repeatable Reads(可重复读)
      • 避免了脏读和不可重复读,无法避免幻读
    • Serializable(串行化)
      • 完全避免

主键

一个列或多个列的排列组合,使用这个组合可以唯一的确定数据库的某一行

索引的底层实现

B+树

大表的常见优化手段

  • 限定数据范围 — 如查询时候只能查询一个月范围内的数据
  • 垂直分区 — 根据数据表的相关性进行拆分,一张表拆为多张表
  • 水平分区 — 通过某种策略储存数据分片,每一篇数据分散到不同的表中
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值