缓存的更新机制

被动更新-固定时间过期—放弃了实时一致性

Setnx固定时间+随机时间

主动更新—更新数据库后、直接更新缓存

cache aside

写:先更新数据提供方、再删除缓存、

鸵鸟算法:忽略一些潜在问题、问题出现的概率极低

消息队列的消息重试、防止删除缓存失败、没消费

Read/Write Through

直接写入缓存、从缓存同步到数据发。调用方只和缓存交互

必须写成功:缓存成功、数据方成功——一个事务。TCC实现。慢了。读多写少。写少慢些可接收

初始化:

1、启动缓存、从数据方初始化

2、读取缓存,初始化

缓存预热。缓存没数据,命中率低。

Write Behind

异步写入数据方。加入消息队列。保证最终一致性。

缓存清理机制

缓存有限、清理未来不被访问,保留未来被频繁访问、提高命中率

过去访问多的、最近被更新的、最近被访问的

过期全部清理、要求缓存数据都有一个生存期、有效期

轮询时效清理

自动时效清理、本质还是轮询

数目阀值清理

1、条数 2、大小

FIFO

LRU

Linked-HashMap

实战:

时效性清理+数据阈值

LRU+软引用

#缓存风险点:

缓存穿透—缓存没用、数据提供方也没有—无效调用、增加数据提供方压力、缓存无用

解决方案:缓存中,缓存一份空数据。有key无value

#缓存雪崩

大量缓存突然失效、引发数据提供方压力骤增

解决方案: 数据阈值清理:阈值高可以缓解;过期时间:随机值、错峰失效

软引用清理、LRU进行强引用

#缓存击穿:

缓存没有、数据提供方有数据。没透。

#实战:

清理机制+更新机制,针对缓存,共同考虑

#缓存预热:

缓存服务启动后,脚步直接灌入,init时候加载。

#缓存的位置:

缓存要靠前、要早

前端缓存

cdn缓存

服务器缓存

数据库缓存

读缓存

写的访问量增大:

平峰

降级

灰度发布

#数据设计

数据库选型:

是否海量数据、大数据?

数据结构是行/列存储?

是否宽表(字段数)

数据属性:(业务数据常用的?辅助数据(日志)?)

是否要求事务?

实时性?—写延迟、读延迟要求不一样。写高读低-          写低读高

查询量:大量记录的少数列、少数记录的所有列

一致性要求

增删改查的要求

99%的业务都用结构化数据—关系型数据库、mysql,oraclee,sqlite

非关系型

列式数据库:Hbase

键值对:redis,memcached

文档:mongoDB—不知道有多少个字段

时序:influx DB

搜索:ES

优化数据库集中在 关系型数据库

sql和nosql是互补的关系

存储引擎选择:

支持的字段、数据类型、锁类型、索引、事务

innoDB 不支持hash索引、会转为btree

表结构设计:

先设计关系—>对象

需求->设计数据库->前期考虑很好的扩展性,

先设计对象—>关系

便于理解、快速实施。对象关系改变、结构变化大

数据冗余—允许反范式

CRUD异常:某些数据缺失,导致其他数据无法插入

删除异常:删除数据是,导致其他数据一起丢失

表、字段、索引

优化:索引、历史数据的拆分、分库分表

### Vastbase 缓存更新机制概述 Vastbase 是一款高性能的关系型数据库系统,其缓存更新机制在保证性能的同时,也确保了数据的一致性和可靠性。以下是关于 Vastbase 缓存更新机制的详细说明: #### 1. 缓存的基本概念 Vastbase 的缓存主要用于存储频繁访问的数据页和索引页,以减少磁盘 I/O 操作,提高查询效率。缓存的内容包括但不限于表数据、索引结构以及执行计划等信息。缓存的管理由数据库管理系统自动完成,用户无需手动干预。 #### 2. 缓存更新机制的核心原理 Vastbase 的缓存更新机制主要依赖于以下几种方式: - **写回策略(Write Back)** 当数据被修改时,Vastbase 并不会立即将修改后的数据页写入磁盘,而是先更新内存中的缓存副本。只有当满足特定条件(如缓存满、事务提交或系统检查点触发)时,才会将修改后的数据页从缓存中写回到磁盘[^4]。 - **写穿透策略(Write Through)** 在某些场景下,为了保证数据一致性,Vastbase 会在更新缓存的同时,直接将修改同步到磁盘。这种策略通常用于关键事务或需要强一致性的场景[^4]。 - **LRU 算法与缓存淘汰** Vastbase 使用基于 LRU(Least Recently Used)的算法来管理缓存中的数据页。当缓存空间不足时,系统会优先淘汰最近最少使用的数据页,从而为新数据腾出空间[^4]。 #### 3. 缓存更新的具体流程 - **数据读取** 当用户发起查询请求时,Vastbase 首先会在缓存中查找所需的数据页。如果命中缓存,则直接返回结果;否则,从磁盘加载数据到缓存中,并返回给用户[^4]。 - **数据修改** 对于写操作(如 `INSERT`、`UPDATE` 或 `DELETE`),Vastbase 会先在缓存更新数据页的状态。随后,根据具体的事务隔离级别和配置,决定是否立即写入磁盘或等待合适的时机进行批量写入[^4]。 - **系统检查点** 定期生成系统检查点是 Vastbase 缓存更新机制的重要组成部分。在检查点期间,所有脏页(即已被修改但尚未写入磁盘的数据页)会被强制刷新到磁盘,以确保数据的安全性[^4]。 #### 4. 缓存更新的优化技术 - **多版本并发控制(MVCC)** Vastbase 借助 MVCC 技术,在缓存中维护多个数据版本,从而支持高并发环境下的读写操作。即使在写操作进行时,读操作仍然可以访问旧版本的数据,避免锁冲突[^5]。 - **缓冲池分区** 为了提高缓存的利用率和访问效率,Vastbase 将缓冲池划分为多个分区,每个分区负责不同的数据类型(如表数据、索引数据等)。这种设计可以有效减少争用和碎片化问题[^4]。 #### 5. 缓存更新的性能调优 - **调整缓存大小** 用户可以通过配置参数(如 `shared_buffers`)来调整缓存的大小,以适应不同的工作负载需求。较大的缓存可以减少磁盘 I/O,但也会增加内存占用。 - **监控缓存命中率** Vastbase 提供了多种工具和视图,用于监控缓存的使用情况和命中率。通过分析这些指标,用户可以识别潜在的性能瓶颈并进行优化。 --- ```sql -- 示例:查看缓存相关统计信息 SELECT * FROM pg_stat_bgwriter; ``` --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值