TimesTen只读缓存组在初始加载时会检查Aging吗?

2024-02-04 12:38

本文主要是介绍TimesTen只读缓存组在初始加载时会检查Aging吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先说为什么要问这个问题,用户的Oracle数据库中有一个非常大的表,存1年的数据,每天1000万条记录。现在需要用TimesTen来做只读缓存,但只需缓存最近一个月的数据,因此申请的内存也只够缓存1个月的。

那么如果TimesTen在初始加载时,先加载所有数据,然后再使用Aging清除数据。那么加载所有数据这一步就会失败,因为内存不过;而且这么做显得有点多余。

所以按照逻辑来说,应该在初始加载时就会利用Aging排除掉不满足条件的数据。

下面来验证一下。

先在Oracle中创建基础表,然后插入1000条数据,注意插入是倒序的,每月一条

create table orders(ord_num int primary key,ship_time date not null);
grant select on orders to cacheadm;DECLAREord_num NUMBER;
BEGINFOR i IN 1..1000 LOOPSELECTnvl(MAX(ord_num), 0)INTO ord_numFROMorders;INSERT INTO orders VALUES (ord_num + 1,ADD_MONTHS(sysdate,-i));COMMIT;END LOOP;
END;
/SQL> select * from orders;ORD_NUM SHIP_TIME
---------- ---------1 23-NOV-202 23-OCT-203 23-SEP-204 23-AUG-205 23-JUL-206 23-JUN-207 23-MAY-208 23-APR-209 23-MAR-2010 23-FEB-2011 23-JAN-20
...

然后创建只读缓存组,启用Aging为1年,清理周期为10分钟:


CREATE READONLY CACHE GROUP "READCACHE" AUTOREFRESH MODE INCREMENTAL INTERVAL 5 MINUTESSTATE PAUSEDFROM"ORATT"."ORDERS" ("ORD_NUM"   NUMBER(38) NOT NULL,"SHIP_TIME" DATE       NOT NULL,PRIMARY KEY("ORD_NUM"))AGING USE SHIP_TIME LIFETIME 366 days CYCLE 10 minutes ONCommand> select * from orders;
0 rows found.

初始加载(LOAD CACHE GROUP ),发现只加载了满足条件的数据,这正是我们要的结果:

Command> select * from orders;
< 1, 2020-11-23 20:38:12 >
< 2, 2020-10-23 20:38:12 >
< 3, 2020-09-23 20:38:12 >
< 4, 2020-08-23 20:38:12 >
< 5, 2020-07-23 20:38:12 >
< 6, 2020-06-23 20:38:12 >
< 7, 2020-05-23 20:38:12 >
< 8, 2020-04-23 20:38:12 >
< 9, 2020-03-23 20:38:12 >
< 10, 2020-02-23 20:38:12 >
< 11, 2020-01-23 20:38:12 >
< 12, 2019-12-23 20:38:12 >
12 rows found.

在手册中关于LOAD CACHE GROUP 的帮助为:

LOAD CACHE GROUP loads all new cache instances from the Oracle database that satisfy the cache group definition and are not yet present in the cache group.

最后补充一点,如果想修改Aging生命周期和检查频率,可使用alter table,可见这些属性都是表的属性,而非缓存组的属性。例如:

alter table "ORATT"."ORDERS"set aging lifetime 1 days;
alter table "ORATT"."ORDERS"set aging cycle 6 hours

这篇关于TimesTen只读缓存组在初始加载时会检查Aging吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/677536

相关文章

Redis缓存问题与缓存更新机制详解

《Redis缓存问题与缓存更新机制详解》本文主要介绍了缓存问题及其解决方案,包括缓存穿透、缓存击穿、缓存雪崩等问题的成因以及相应的预防和解决方法,同时,还详细探讨了缓存更新机制,包括不同情况下的缓存更... 目录一、缓存问题1.1 缓存穿透1.1.1 问题来源1.1.2 解决方案1.2 缓存击穿1.2.1

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

shell脚本快速检查192.168.1网段ip是否在用的方法

《shell脚本快速检查192.168.1网段ip是否在用的方法》该Shell脚本通过并发ping命令检查192.168.1网段中哪些IP地址正在使用,脚本定义了网络段、超时时间和并行扫描数量,并使用... 目录脚本:检查 192.168.1 网段 IP 是否在用脚本说明使用方法示例输出优化建议总结检查 1

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

springboot 加载本地jar到maven的实现方法

《springboot加载本地jar到maven的实现方法》如何在SpringBoot项目中加载本地jar到Maven本地仓库,使用Maven的install-file目标来实现,本文结合实例代码给... 在Spring Boothttp://www.chinasem.cn项目中,如果你想要加载一个本地的ja

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab