2

是否有命令知道 kdb 服务器是否正忙于运行查询?更好的是,知道正在运行的查询的完成百分比是多少?

到目前为止,我一直在查看 linux 的顶部屏幕以了解要使用哪个服务器...

4

2 回答 2

3

不幸的是,不是直接的。原因是由于 KDB 进程的单线程特性。在实践中,通过向服务器添加一些基本的日志记录很容易解决这个问题。因此,每当查询进入时,只需将查询进入的时间和结果返回给用户的时间记录到文件中。

看一下分别调用来处理同步或异步请求的.z.pg.z.ps函数。默认情况下,它们只是设置为“值”,这意味着评估字符串并返回结果。只需将其替换为您自己的函数即可将事件记录到文件或日志服务器。

于 2013-06-22T19:32:31.417 回答
-1

除了上述解决方案,更简单的方法是:不断检查端口。

通常所有查询都将针对端口运行,并且 kdb 服务器可以为不同目的启动多个端口。

说明:使用下面的代码再次查询端口,如果端口忙,则返回空 res。您可以进一步终止端口并重新启动它或任何要求。

代码将向端口发送 1 并计算。

.server.testQuery:{[inPort]
  res:@[{hopen(x;3000)};`$":",":" sv string `,inPort;0N];
  if[not null res;hclose res];
  :res  
  };
于 2018-04-13T12:21:12.563 回答