🏠 首页›第一梯队 · 决胜核心 · 第 8 小时 · 数据库设计基础知识

数据库优化与缓存架构(案例重点)

选择 2~5 分案例 25 分(试题一常客)
📄 教材出处 · 第 8 小时《数据库》 (书第 68–86 页) ▸ 查看原文摘录 打开教材 PDF ↗
第 68 页 ↗数据库设计基础知识 8.0 章节考点分析 主要学习数据库基础概念、关系数据库、数据库设计、应用程序与数据库交互、NoSQL 数据库等内容。
第 69 页 ↗本小时介绍数据库技术 的发展历程以及数据模型、主流的关系数据库、数据库设计的步骤与方法、新型数据库 NoSQL。
第 70 页 ↗数据控制功能包括:保证护具的安全性和完整性以及并发控制的能力。
第 71 页 ↗数据库设计基础知识 63 表8.1 数据库的三级模式 概念模式 外模式 内模式 是数据库中全体数据的逻 又叫子模式或用户模式,用以描述用户 是数据物理结构和存储方式的描 辑结构和特征的描述,是所 看到或使用的那部分数据的逻辑结构, 述,是数据在数据库内部的表示方 有用户的公共数据视图 用户根据外模式用数据操作语句或应用 式,定义所有的内部记录类型、索 程序去操作数据库中的数据 引和文件的组织方
第 72 页 ↗即填充左侧关系中所有与右侧关系中任一元 完全外连接 组都不匹配的元组,并填充右侧关系中所有与左侧关系中任一元组都不匹配的 元组,将产生的新元组加入自然连接的结果中 3.关系数据库设计基本理论 (1)函数依赖:设R(U)是属性U上的一个关系模式,X和Y是U的子集,r是R的任一关 系,如果对于r中的任意两个元组u和v,只要有u[X]=v[X],就有u[Y]=v[Y],则称X函数决定Y, 或称Y函数依赖
第 73 页 ↗数据库设计基础知识 65 模式的主码是学号+课程号,(学号,课程号)→成绩是完全函数依赖。

知识点目录(共 4 项)

  1. 索引优化与 SQL 优化
  2. MySQL 主从复制过程与读写分离架构
  3. 分库分表:垂直拆分 / 水平拆分
  4. 缓存三大问题:穿透 / 击穿 / 雪崩及解决方案

知识点详解

一、集中式优化:反规范化设计(案例高频)

反规范化是为了避免表连接操作、提高查询性能而有意引入冗余。五种手段:

手段作用
增加冗余列多个表具有相同列,查询时避免连接操作
增加派生列列可由其他数据计算生成,查询时减少计算量、加快查询
重新组表把经常一起连接的两个表合并为一个表,减少连接
水平分割表按记录(行)分割到多个表——表规模很大、数据相对独立、需存多个介质时
垂直分割表按属性(列)分割:主键+部分列一个表,主键+其他列另一个表——查询时减少 I/O 次数

反规范化的缺点:数据重复存储、浪费磁盘空间、可能产生数据不一致。保证一致性的手段:触发器、事务机制(单体数据库)、应用保证(异构数据库之间)、批处理脚本。

记忆:"冗余免连接、派生少计算、组表并表、水平分行、垂直分列"。水平=行拆分,垂直=列拆分(考试最爱混淆点)。

二、分布式优化:主从复制 + 读写分离 + 分库分表(案例必考)

应用服务器写请求→主库 读请求→从库 主数据库负责写操作 从数据库负责读操作 从库2 · 从库3 … binlog 主从复制(异步/半同步) 主从复制好处:① 数据热备,主库故障可切换从库;② 分担读压力;③ 提高系统整体并发能力
图 1-25 主从复制与读写分离架构(依据教材 8.7 节整理绘制)

三、Redis 分布式缓存(案例高频)

Redis:键值对形式的内存数据库,基于内存读写,适合缓存高频热点数据,降低数据库查询压力。

数据类型特点典型应用
string基本类型缓存层、计数器(播放量/浏览量)
hash代替 string,节省空间用户信息
set无序集合,值不重复去重、抽奖、用户池
list双向链表,可模拟栈/队列评论、点赞
zset有序集合,每元素带分数热门帖子排行榜

过期策略:定期删除(每隔一段时间随机抽取过期 key 删除)+ 惰性删除(查询时发现过期才删除);再配合内存淘汰机制(volatile-lru / volatile-lfu / volatile-random / volatile-ttl / allkeys-lru / allkeys-lfu / allkeys-random / no-eviction)。

持久化RDB 内存快照AOF 日志
机制把当前内存数据集快照写入磁盘,恢复时直接读入持续保存服务器执行的更新命令(类似 MySQL binlog),恢复时从头回放
刷新频率/文件大小低 / 小高 / 大
恢复效率 / 数据安全高 / 低(可能丢最后一次快照后的数据)低 / 高

四、缓存三大问题(案例高频)

问题定义与原因解决方案
缓存穿透大量请求访问不存在的 key(恶意攻击、新业务上线 Redis 为空),请求直达数据库限制来源 IP/黑名单;校验 key 合法性;布隆过滤器;缓存预热;前端流量控制;空 key 缓存(值为 null)
缓存雪崩大量 key 同时过期(相同过期时间)或 Redis 故障宕机,请求全部打到数据库,并级联影响上下游过期时间加随机值均匀过期;主从复制/cluster 集群提高可用性;服务降级、熔断、限流
缓存击穿少量热点 key 缓存时间失效(如秒杀"库存数量"过期时间太短),请求直达数据库热点 key 不过期(或延长过期时间);互斥锁(只让一个请求回源重建缓存)
考法:案例题"电商/秒杀系统读写分离+缓存设计":给场景判断是穿透/雪崩/击穿并给方案;"水平 vs 垂直切分"辨析;RDB vs AOF 对比表填空;写数据顺序"先写数据库,成功后更新缓存"。