数据库
未读
MySQL 索引常见面试题
一、什么是索引? MySQL 索引是用于提高数据库查询性能的一种数据结构。它类似于书籍的目录,可以帮助我们更快地找到所需的信息。索引能够减少数据库的扫描量,加速查询。 举一个生活中的例子: 假如你在图书馆,里面存放了成千上万的书籍。如果你想要找到一本需要的书,你会怎么做呢? 没有索引的情况: 从第一
数据库
未读
MySQL 一行记录是如何存储的?
MySQL 数据库的目录位置 首先,我们在 MySQL 控制台中执行SHOW VARIABLES LIKE 'datadir';就可以看到数据库文件的存放目录。 在 Linux 的默认路径中: Variable_name Value datadir /var/lib/mysql 在 Window 的
数据库
未读
执行一条SQL查询语句,期间发生了什么?
MySQL 的架构大致可分为两层:Server 层 和 存储引擎层。 Server 层: Server 层是MySQL的核心,负责处理大多数的核心服务功能,如连接器、查询缓存、预处理器、优化器、执行器以及所有的内置函数(如数学、日期和时间、加密函数)等。此外,还有跨存储引擎的功能(如存储过程、触发器
数据库
未读
Redis缓存穿透、击穿、雪崩问题
本文介绍了缓存穿透、缓存雪崩和缓存击穿三大缓存常见问题及其解决方案。
缓存穿透指查询不存在数据,请求直达数据库,可通过**缓存空对象**(简单但占用内存)或**布隆过滤器**(节省内存但有误判)解决。
缓存雪崩是大量缓存同时失效或Redis宕机,可通过添加随机TTL、集群部署、降级限流和多级缓存缓解。
缓存击穿针对热点Key失效导致高并发访问数据库,常用**互斥锁**(保证一致性但影响性能)和**逻辑过期**(性能好但可能数据不一致)应对。
综合比较,互斥锁无额外内存消耗但可能影响性能;逻辑过期响应快但实现复杂且牺牲一致性。
数据库
未读
Redis缓存更新策略
一、redis缓存更新策略 缓存更新是Redis为了节约内存而设计出来的一个东西,主要是因为内存数据宝贵,当我们向Redis插入太多数据,此时就可能会导致缓存中的数据过多,所以Redis会对部分数据进行更新,或把他叫为淘汰更合适。 自动淘汰: 当Redis内存达到max-memory限制时,启动自动