防止KDB +数据库因中止错误而死亡

时间:2016-09-23 20:37:23

标签: database kdb

如果使用-w命令行参数设置了最大内存,并且如果触发了分配过多内存的错误查询,则KDB将以“-w abort”错误退出。

是否可以让KDB停止执行该查询而不是自杀。

至少是否有一个回调函数,kdb会在自杀之前调用它?

由于

1 个答案:

答案 0 :(得分:3)

遗憾的是,没有回调处理此错误,也无法使用受保护的评估来捕获-w aborthttp://code.kx.com/q/ref/errors/#trap

/process 1 (setup workspace/callbacks)  
>q -w 1000 -p 4000 -e 1
q)tab:([]sym:30000000?`3;size:30000000?10f;time:30000000?.z.t)
q).z.pg:{0N!(`pg;x);@[value;x;(::)]}
q).z.exit:{'stop}
q).z.pc:{'stop}

/process 2 (issue sync request)
>q
q)(`::4000)"select from tab"
'close

/process 1 (output)
q)(`pg;"select from tab")
-w abort

相反,您可以尝试阻止此错误。一种方法是在执行查询之前定义权限并验证每个用户请求

详情请参阅以下白皮书:
http://www.firstderivatives.com/downloads/q_for_gods_july_2013.pdf