TSL_Flush 函数

TSL_Flush 函数将数据清空到磁盘。

语法

TSL_Flush(
           handle      lvarchar),
           container   integer DEFAULT NULL),
           writeflag   integer DEFAULT 1)
returns integer 
handle
TSL_AttachTSL_Init 函数返回的表名和列名组合。
container(可选)
容器标识。缺省值为 NULL,表示所有容器。
writeflag(可选)
日志记录方式:
1 = 缺省值。标准日志记录。
257 = TSOPEN_REDUCDED_LOG:减少插入数据时生成的日志记录数。请参阅flags 参数值中 TSOPEN_REDUCDED_LOG 标志的描述。

用法

作为装入器程序的一部分,使用 TSL_Flush 函数将时间系列数据写入磁盘。必须在由 TSL_Init 函数所初始化装入器会话的上下文中的事务内运行 TSL_Flush 函数。TSL_Flush 函数插入数据的方式与 PutElem 函数相同。 不规则的时间系列允许有重复元素。

如果包含 TSOPEN_REDUCED_LOG 标志,那么必须在只能包含使用 TSOPEN_REDUCED_LOG 标志的其他函数的事务中运行 TSL_Flush 函数。只有在该事务落实之后,脏读取才可看到保存的元素。

运行 TSL_Flush 函数以保存由 TSL_PutTSL_PutSQLTSL_PutRow 函数装入的数据。在装入最多 65536 条记录后,必须将数据保存到磁盘。

返回结果

一个整数,指示函数的状态:

示例 1:运行 TSL_Flush 函数

以下语句将表 ts_dataTimeSeriesraw_reads 的数据保存到磁盘:

EXECUTE FUNCTION TSL_Flush('ts_data|raw_reads');

示例 2:自动运行 TSL_Flush 函数

以下语句创建用户定义的函数,以在装入了 65536 条记录后自动运行 TSL_Flush 函数:

CREATE FUNCTION IF NOT EXISTS flush_status(val int)
		RETURNS int as nbcontainers, int as nbvalues
  			DEFINE v1, v2 integer;
 			 LET v1 = val / 65536;
 			 LET v2 = mod(val, 65536);
 			 RETURN v1, v2;
		END FUNCTION;

以下语句根据需要自动运行 TSL_Flush 函数:

EXECUTE FUNCTION flush_status(TSL_Flush('ts_data|reads'));

示例 3:在减少日志记录的情况下运行 TSL_Flush 函数

以下语句将数据保存到磁盘,但减少了日志记录:

BEGIN WORK
EXECUTE FUNCTION TSL_Flush('ts_data|raw_reads', 257);
COMMIT WORK