当用户在飞行中中止他的请求时,我有时会取消任何支持他当时尝试的任何只读操作的只读语句 - 我谨慎地遵循这种模式 - 仅为在高流量期间发生的昂贵查询保留因此有可能引起争用。
在 PG 中,我取消查询,如下所示:
SELECT pg_cancel_backend(pid)
;
当我这样做时,PG 会遵守但会记录以下内容:Error: canceling statement due to user request
。
我明白为什么它的兄弟pg_terminate_backend
会将自己归类为错误;这是强制终止进程的最后一搏,具有潜在危险的尝试。
但我不明白为什么通常的查询取消会被同样对待。毕竟我已经请求取消,那么为什么会以如此高的严重级别记录它呢?