我通过JDBC驱动程序在java应用程序中使用Monetdb。 我需要取消长时间运行的查询或不再相关的查询。 由于monetdb JDBC驱动程序不支持jdbc语句取消,因此我已按照此处所述实现了我的查询取消机制: https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/monitor
首先,我检索要取消的查询的qtag
,然后执行命令call sys.stop(<qtag>)
。
我通过查询
监控了活动查询的队列 select * from sys.queue()
我看到许多被取消的查询都处于stopping
状态,并且它们会在那里停留很长时间(远远超过查询完成所需的时间),并且可能永远存在,从而阻止执行真正的查询它似乎。
关闭JDBC连接会在此停止状态下清除这些查询:我知道当您取消查询时,您无法中断当前执行的MAL操作,但我不明白这个stopping
状态的含义,以及为什么取消查询会在那里待很长时间。
难道我做错了什么 ?为什么关闭jdbc连接会删除stopping
状态下的所有这些查询?如何在不影响monetdb服务器的情况下有效取消查询。