MST

星途 面试题库

面试题:MySQL中如何设计缓存表以提升简单查询性能

假设你有一个电商数据库,经常需要查询商品的基本信息(如商品名称、价格),请阐述设计缓存表提升这类查询性能的思路,包括表结构设计、数据更新策略等方面。
49.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

表结构设计

  1. 商品ID:作为缓存表的主键,唯一标识每个商品,便于快速定位数据,类型通常为整数(如 INT)。
  2. 商品名称:存储商品的名称,数据类型可以是字符串(如 VARCHAR),长度根据实际商品名称长度合理设置。
  3. 商品价格:记录商品价格,根据价格的范围和精度要求,可选择 DECIMAL 类型,如 DECIMAL(10, 2) 表示总长度10位,小数部分2位。

数据更新策略

  1. 主动更新
    • 当商品基本信息在源电商数据库发生变化时,在更新源数据库的同时,立即更新缓存表。例如,使用数据库事务确保源表和缓存表更新的一致性。
    • 可以通过数据库触发器来实现部分场景下的自动更新,比如当商品价格字段更新时,自动触发缓存表对应记录的更新。
  2. 被动更新
    • 设置缓存数据的过期时间。例如,对于商品价格相对稳定的情况,可以设置较长的过期时间,如一天。过期后,下次查询时发现缓存数据已过期,从源数据库重新获取最新数据并更新缓存表。
    • 定期任务检查。通过定时任务(如每天凌晨)扫描源数据库和缓存表,对比数据是否有变化,若有变化则更新缓存表。这种方式适用于数据更新频率较低且对实时性要求不是极高的场景。