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

相关文章

springboot加载不到nacos配置中心的配置问题处理

《springboot加载不到nacos配置中心的配置问题处理》:本文主要介绍springboot加载不到nacos配置中心的配置问题处理,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录springboot加载不到nacos配置中心的配置两种可能Spring Boot 版本Nacos

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

IDEA下"File is read-only"可能原因分析及"找不到或无法加载主类"的问题

《IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题》:本文主要介绍IDEA下Fileisread-only可能原因分析及找不到或无法加载主类的问题,具有很好的参... 目录1.File is read-only”可能原因2.“找不到或无法加载主类”问题的解决总结1.File

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

Spring Boot 整合 Redis 实现数据缓存案例详解

《SpringBoot整合Redis实现数据缓存案例详解》Springboot缓存,默认使用的是ConcurrentMap的方式来实现的,然而我们在项目中并不会这么使用,本文介绍SpringB... 目录1.添加 Maven 依赖2.配置Redis属性3.创建 redisCacheManager4.使用Sp

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red