首页 > 解决方案 > 在 kdbb 中重放 tplog

问题描述

我试图在 kdb 中重播 tplog。数据大约1gb,但需要一整天,仍然无法完成回放。

其中一张表有两个键,两者都是string. 我不确定这是否是它需要永远的原因。我也使用upsert而不是insert. 我应该更改什么以使其重播更快?

我认为是改变upd功能。因此,当加载到内存时,这两列会变为symbol第一列。

标签: kdb

解决方案


正如评论中所讨论的,如果使用带有 upserting 的键控表的目的是让每个键有一个唯一的行,那么从无键控表开始并设置 upd 可能更有效(在日志重放方面)insert并且当回放完成时,然后根据键对表进行分组,例如

`keyCol1`keyCol2 xkey select from replayedTable where i=(last;i) fby ([]keyCol1;keyCol2)

请注意,insert它不能与键控表一起使用,因为当键已存在于表中时,它不允许插入。

键控表上的原件upsert速度慢的原因可能是键的数量和在每个 upsert 上查找键列表(特别是字符串)的效率低下。这只是猜测


推荐阅读