TSContainerPurge 函数从一个或多个容器中删除指定时间戳记内的时间系列数据。
TSContainerPurge( control_file lvarchar, location lvarchar default 'client', flags integer default 0); returns lvarchar
container_name|instance_id|end_range|
使用 TSContainerPurge 函数可从容器中除去旧数据。TSContainerPurge 函数会删除符合以下条件的页面:页面中所有元素的时间戳记都等于或早于指定容器中指定时间系列实例的指定结束时间。将释放生成的空页面。
可以使用 TSContainerPurge 函数从行中除去使用除容器定义中所指定子类型以外的 TimeSeries 子类型的数据。但是,容器定义中指定的 TimeSeries 子类型必须存在。
可以通过将用于定义删除条件的 SELECT 语句的结果卸载到文件中,从而创建控制文件。在 SELECT 语句中使用以下 TimeSeries 函数可在控制文件中填充容器名称和实例标识,对于规则时间系列,还会填充每个实例的结束范围的索引:
如果打算一次性删除大量数据,那么运行多个 TSContainerPurge 函数来删除不同容器中的数据可能会比运行单个 TSContainerPurge 函数来删除的速度快。
LVARCHAR 字符串,用于描述受影响的容器数、释放的页面数和删除的元素数。例如:
"containers(4) deleted_pages(2043) deleted_slots(260300)"
以下语句创建名为 regular_purge.unl 的控制文件,用于从存储 10 个规则时间系列实例的所有容器中删除这些实例中的元素:
UNLOAD TO 'regular_purge.unl' SELECT GetContainerName(readings),InstanceId(readings), GetIndex(readings,'2011-10-01 23:45:00.00000'::datetime year to fraction(5))::varchar(25) FROM sm WHERE meter_id IN ('met0','met1','met11','met4','met5','met6', 'met61','met7','met8','met9');
生成的控制文件具有以下内容:
sm0|1|7871| sm0|8|7295| sm0|13|6911| sm1|2|7775| sm1|9|7199| sm1|14|6815| sm2|3|7679| sm2|10|7103| sm3|7|7391| sm3|12|7007|
在 WHERE 子句中指定的 10 个时间系列实例存储在四个不同的容器中,这些容器列在第一列中。第二列中列出每个时间系列实例的标识。第三列中列出与时间戳记 2011-10-01 23:45:00.00000 对应的元素索引号。
以下语句删除这 10 个时间系列实例在 2011-10-01 23:45:00.00000 之时及之前的所有元素:
EXECUTE FUNCTION TSContainerPurge('regular_purge.unl',1);
保留的任何已删除元素将标记为 NULL。
以下语句创建控制文件 regular_purge2.unl,用于删除容器 sm0 中所有时间系列实例的元素:
UNLOAD TO regular_purge2.unl SELECT GetContainerName(readings),InstanceId(readings), GetIndex(readings,'2011-10-01 23:00:00.00000'::datetime year to fraction(5))::varchar(25) FROM sm WHERE GetContainerName(readings) = 'sm0';
生成的控制文件具有单个容器的条目:
sm0|1|7871| sm0|8|7295| sm0|13|6911|
以下语句创建控制文件 irregular_purge.unl,用于删除四个不规则时间系列实例中的元素:
UNLOAD TO irregular_purge.unl SELECT GetContainerName(readings),InstanceId(readings), '2011-10-01 23:00:00.00000'::varchar(25) FROM sm WHERE meter_id IN ('met12','met2','met3','met62');
生成的控制文件包括结束时间戳记,而不是元素索引号,例如:
sm4|4|2011-10-01 23:45:00.00000| sm4|6|2011-10-01 23:45:00.00000| sm5|5|2011-10-01 23:45:00.00000| sm5|11|2011-10-01 23:45:00.00000|