Kdb 如何重播TP日志文件时获得wsfull错误,即使是-11!(-2;`路径)

Kdb 如何重播TP日志文件时获得wsfull错误,即使是-11!(-2;`路径),kdb,Kdb,即使尝试使用以下方法从TPlog文件获取消息计数,我也会收到wsfull错误: -11!(-2;`:/uts/tplog_2020.07.07) /- wsfull 在这种情况下,如何获取tplog文件的计数? 在这种情况下,将消息分块上传到分区是否是显示tplog文件的唯一选项 编辑: 我试着跑步: upd:insert(Version 3.2) -11!(1000000;`:/uts/tplog_2020.07.07); /- output 1000000 count trade /-

即使尝试使用以下方法从TPlog文件获取消息计数,我也会收到wsfull错误:

-11!(-2;`:/uts/tplog_2020.07.07) /- wsfull 
在这种情况下,如何获取tplog文件的计数?
在这种情况下,将消息分块上传到分区是否是显示tplog文件的唯一选项

编辑:

我试着跑步:

upd:insert(Version 3.2)
-11!(1000000;`:/uts/tplog_2020.07.07); /- output 1000000
count trade /- output count from table - 88471241
-11!(2000000;`:/uts/tplog_2020.07.07); /- output 2000000
count trade/- output count from table - 88471241
-11!(3000000;`:/uts/tplog_2020.07.07); /- wsfull

Tried with version 4.0
-11!(-2;`:/uts/tplog_2020.07.07); /- type error
当我试图从表中获取最后几条消息时,它抛出“分段错误”

-11!(1000000;`:/uts/tplog_2020.07.07); /- output - 88471241
-5#trade /- Segmentation Fault, session closed

我的第一个猜测是tplog文件已损坏。如果有人能告诉我如何从tplog文件中获取导致类型错误的错误消息,那将非常有帮助。

您使用的是什么KDB版本

在4.0中,他们增加了完整性检查

“进一步的完整性检查已添加到streaming execute-11!x,以避免损坏/不完整日志文件上出现wsfull或SEGFULT。”


您使用的是什么KDB版本

在4.0中,他们增加了完整性检查

“进一步的完整性检查已添加到streaming execute-11!x,以避免损坏/不完整日志文件上出现wsfull或SEGFULT。”


根据评论中的讨论,我开始认为您将块写入日志文件的方式有问题。重放100个区块应该返回100个,重放200个区块应该返回200个区块(假设一个格式良好的日志文件)。以下是一个可用于检查单个块的函数:

{`counter set 0;.z.ps:{$[counter=desiredChunk;`savedChunk set x;counter+:1]};-11!(1+desiredChunk::y;x);.z.ps:{value x}}[`:tplog2020.07.01;5]
传递日志文件和要提取的区块(第一个区块从0开始)。一旦您运行了它,您将拥有一个全局变量“savedChunk”,它包含您的块,您可以对其进行检查。单个块应如下所示:

q)savedChunk
`upd
`myTable
(0D05:34:00.186409000;`foo;1.23;1234;1b;.....)

/or if you write to the tplog in batches it could look like:
q)savedChunk
`upd
`myTable
(0D05:34:00.186409000 0D05:34:00.186409000;`foo`bar;1.23 4.56;1234 5678;10b;.....)
我会看看你的块,从块零开始,看看它们是否结构良好。然后看块12683,看看是否有什么不对劲的地方


您的块是否可能包含多个upd/表?(这将是一个我以前从未见过的自定义实现)。

根据评论中的讨论,我开始认为您将块写入日志文件的方式有问题。重放100个区块应该返回100个,重放200个区块应该返回200个区块(假设一个格式良好的日志文件)。以下是一个可用于检查单个块的函数:

{`counter set 0;.z.ps:{$[counter=desiredChunk;`savedChunk set x;counter+:1]};-11!(1+desiredChunk::y;x);.z.ps:{value x}}[`:tplog2020.07.01;5]
传递日志文件和要提取的区块(第一个区块从0开始)。一旦您运行了它,您将拥有一个全局变量“savedChunk”,它包含您的块,您可以对其进行检查。单个块应如下所示:

q)savedChunk
`upd
`myTable
(0D05:34:00.186409000;`foo;1.23;1234;1b;.....)

/or if you write to the tplog in batches it could look like:
q)savedChunk
`upd
`myTable
(0D05:34:00.186409000 0D05:34:00.186409000;`foo`bar;1.23 4.56;1234 5678;10b;.....)
我会看看你的块,从块零开始,看看它们是否结构良好。然后看块12683,看看是否有什么不对劲的地方


您的块是否可能包含多个upd/表?(这将是我以前从未见过的自定义实现)。

日志文件有多大,kdb中的内存限制是多少?日志文件是24G。更新了问题的细节。嗯,这是一个奇怪的问题。我不明白1m块和2m块的重放是如何输出88471241块的。对于小于1m的数字,它会返回什么?比如说100,200,300等等,有没有一个数字是它开始不正常行为的?它是从数字12684开始不正常行为的-11!(100;
:/uts/tplog_2020.07.07)/-4187160-11!(1000;
:/uts/tplog_2020.07.07)/-42344227-11!(10000;
:/uts/tplog_2020.07.07)/-83452868-11!(12683;
:/uts/tplog_2020.07.07)/-88470128-11!(12684;
:/uts/tplog_2020.07.07)/-88471241-11!(12685;
:/uts/tplog_2020.07.07)/-88471241-11!(15000;`:/uts/tplog_2020.07.07)/-88471241;继续回答……日志文件有多大,kdb中的内存限制是多少?日志文件是24G。更新了问题的细节。嗯,这是一个奇怪的问题。我不明白1m块和2m块的重放是如何输出88471241块的。对于小于1m的数字,它会返回什么?比如说100,200,300等等,有没有一个数字是它开始不正常行为的?它是从数字12684开始不正常行为的-11!(100;
:/uts/tplog_2020.07.07)/-4187160-11!(1000;
:/uts/tplog_2020.07.07)/-42344227-11!(10000;
:/uts/tplog_2020.07.07)/-83452868-11!(12683;
:/uts/tplog_2020.07.07)/-88470128-11!(12684;
:/uts/tplog_2020.07.07)/-88471241-11!(12685;
:/uts/tplog_2020.07.07)/-88471241-11!(15000;`:/uts/tplog_2020.07.07)/-88471241;继续回答。。。。。。