【大数据组件学习笔记】Pipeline DB机制及参数解释(二)

通过源码(src/config.c)我们可以得到每一个参数的简要描述、默认值、取值范围(官网文档没有取值范围)。再结合官网文档和源码中使用的典型位置,分析参数作用【源码部分逐步更新】

num_workers

默认:1

范围:1~1024

解释:设置为每一个database分配的并行连续查询的Worker进程数量,设置的越大,吞吐量越大,直到受到CPU限制。

 

num_combiners

默认:1

范围:1~1024

解释:设置为每一个database分配的并行连续查询的Worker进程数量,设置的越大,吞吐量越大,直到受到磁盘I/O限制

 

num_queues

默认:1

范围:1~1024

解释:设置并行连续查询的IPC队列数量。

 

num_reapers

默认:1

范围:1~1024

解释:设置并行连续查询的Reaper进程数量,Reaper进程是用来回收设置了数据生存时间(Time-To-Live,TTL)的CV中的过期数据。

 

stream_insert_level

默认:sync_receive

范围:async,sync_receive,sync_commit

解释:设置当前事务的流写入的同步级别,定义INSERT操作结束如何响应客户端。Async,异步模式,数据一发送到ZMQ就响应客户端。sync_receive,同步接收模式,数据一经Worker接收(消费)就响应客户端。sync_commit,同步提交模式,只有在下游的Combiner将所有INSERT引起的更改提交到MREL时响应客户端。目测最后一种可以保证高可用性,但是官方泼了冷水,提到sync_commit仍处于测试阶段,且使用后写入延迟明显增加,不适合生产环境。

 

sliding_window_step_factor

默认:5.0%

范围:0.0%~50.0%

解释:设置滑动窗口查询的步长,这个步长是窗口大小的百分比。设置的越大,计算性能越高,要和参数‘刷新间隔’的设置做权衡。

 

continuous_queries_enabled(官网文档未提及)

默认:true

范围:true,false

解释:如果为真,则在连续查询创建时就开始执行。

 

stream_targets(官网文档未提及)

默认:true

范围:true,false

解释:当插入Stream时会被影响的CV列表。

 

batch_mem(官网文档未提及)

默认:262144KB(256M)

范围:8192KB(8M),INT_MAX / 1024KB【源码中的MAX_KILOBYTES是Postgre的guc.h中定义的】

解释:设置执行一次连续查询计划前最大的积累批大小,设置的越大,CV的更新频率越低,延迟越高,还会再进程崩溃时造城数据丢失。

 

batch_size

默认:10000

范围:10,INT_MAX

解释:设置执行一次连续查询计划前最大的积累批大小,类似于Kafka Producer的batch_size,设置的较高会使CV的更新频率变低,延迟越高,还会再进程崩溃时造城数据丢失。

 

commit_interval

默认:50ms

范围:0ms,60000ms

解释:设置Combiner在提交计算结果前在内存中保留计算数据的毫秒数,将合并的结果数据HOLD在combiner_work_mem中。设置的越大,计算性能越高,但CV的更新频率会降低,而且更容易造城数据丢失。

 

ipc_hwm

默认:10

范围:1,INT_MAX

解释:设置Worker和Combiner进程之间的水位(High WaterMark)。值越大,在内存中排队的消息就越多。

 

max_wait

默认:50ms

范围:1ms,60000ms

解释:设置连续查询进程等待一批数据堆积的毫秒数。设置的越大,计算性能越高,但CV的更新频率会降低,而且更容易造城数据丢失。

 

ttl_expiration_batch_size

默认:10000

范围:0,INT_MAX

解释:设置Reaper一次回收的过期数据的最大数量。该参数的目的是防止长事务,设置为0意味着不限制一次回收的数量。

 

ttl_expiration_threshold

默认:5%

范围:0%,100%

解释:设置Reaper从CV中回收过期数据的比例(允许额外延期的时间占原定过期时间的比例),设置的高将会节省在CV上的删除业务。

源码:(src/reaper.c)

static bool should_expire(Oid relid)
{
... ...	
	int threshold_ms;
... ...
// 计算可接受的过期时间
	threshold_ms = entry->ttl * (1000 * ttl_expiration_threshold / 100.0);

// 调用Postgre timestamp.c.方法,返回stop_time-start_time>=msec 
	if (TimestampDifferenceExceeds(
entry->last_expired, 		//start_time 过期时间
GetCurrentTimestamp(), 	//stop_time 此时
threshold_ms))			//msec 可接受的秒数
		return true;

	return false;
}

 

queue_mem(官网文档未提及)

默认:262144KB(256M)

范围:8192KB(8M),INT_MAX / 1024KB

解释:设置每个队列进程将使用的最大内存量。

 

Fillfactor

默认:50

范围:1,100

解释:设置CV的Fillfactor,由于流计算的结果CV需要经常被Combiner更新,所以多数为更新操作,那么设置合理的Fillfactor可以避免索引膨胀。

 

combiner_work_mem

默认:262144KB(256M)

范围:16384KB(16M),INT_MAX / 1024KB

解释:设置Combiner用于连续查询结果的的最大内存。这块内存在Combiner合并Worker计算结果时,用于排序、Hash。如果combiner使用内存超出这个设置,则使用磁盘。

 

anonymous_update_checks

默认:true

范围:true,false

解释:是否应匿名检查是否有新版本。

 

matrels_writable

默认:false

范围:true,false

解释:如果为true,则允许直接对CV进行更改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值