Timesten 数据过期策略有两种,一种是 基于LRU策略,一种是基于日期时间。以下记录两个例子,time_based 经过本人测试,LRU 还木有测试过,摘录官网原文,方便查阅。
LRU aging
CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP new_customers FROM oratt.customer (cust_num NUMBER(6) NOT NULL, region VARCHAR2(10), name VARCHAR2(50), address VARCHAR2(100), PRIMARY KEY(cust_num)) AGING LRU ON; 调用内置函数 ttAgingLRUConfig 开启 LRU 属性。The following built-in procedure call specifies that the aging process checks every 5 minutes to see if the TimesTen database's permanent partition space usage is above 95 percent. If it is, the least recently used data is automatically aged out or deleted until the space usage is at or below 75 percent.
CALL ttAgingLRUConfig(.75, .95, 5);
Time-based aging
---建基表
CREATE TABLE orders
(ord_num NUMBER(10) NOT NULL PRIMARY KEY,
cust_num NUMBER(6) NOT NULL,
when_placed DATE NOT NULL,
when_shipped DATE NOT NULL
);
---插入测试数据
insert into orders values(1,10,to_date('2014-06-13 20:10:00','yyyy-mm-dd hh24:mi:ss'),sysdate);
insert into orders values(2,20,to_date('2014-06-13 20:20:00','yyyy-mm-dd hh24:mi:ss'),sysdate);
insert into orders values(3,30,to_date('2014-06-13 21:10:00','yyyy-mm-dd hh24:mi:ss'),sysdate);
commit ;
-----创建一个AWT 类型或 read cache group 类型的cache group 数据自动aging
CREATE ASYNCHRONOUS WRITETHROUGH CACHE GROUP cache_ordered_1
FROM ytord.orders
(ord_num NUMBER(10) NOT NULL,
cust_num NUMBER(6) NOT NULL,
when_placed DATE NOT NULL,
when_shipped DATE NOT NULL,
PRIMARY KEY(ord_num))
AGING USE when_placed LIFETIME 5 MINUTES CYCLE 1 MINUTES ON ;
---创建一个 read cache group
CREATE READONLY CACHE GROUP cache_ordered_3
AUTOREFRESH MODE INCREMENTAL INTERVAL 1 MINUTES
FROM ytord.orders3
(ord_num NUMBER(10) NOT NULL,
cust_num NUMBER(6) NOT NULL,
when_placed DATE NOT NULL,
when_shipped DATE NOT NULL,
PRIMARY KEY(ord_num))
AGING USE when_placed LIFETIME 5 MINUTES CYCLE 1 MINUTES ON;
关于aging 还有一些用法上的细节,后面进行补充。