我正在调试我的PostgreSQL数据库,发现7个查询“DEALLOCATE pdo_stmt”已经运行了15天。
从PostgreSQL文档中读取,我发现这些查询应该在会话结束后解除分配准备好的语句,但我无法相信它可能需要花费很多时间。
此外,该公司的其他项目发现相同的查询已经运行了不寻常的时间。
数据库托管在AWS RDS上,使用Laravel 5.2进行访问。
我跑的查询是:
SELECT
pid,
now() - query_start as duration,
query,
state
FROM pg_stat_activity
where now() - query_start > interval '2 minutes'
order by now() - query_start desc
结果是:
10169 15 days 23:52:04.697072 DEALLOCATE pdo_stmt_00000003 idle
10170 15 days 23:52:04.64288 DEALLOCATE pdo_stmt_00000003 idle
10171 15 days 23:52:04.616907 DEALLOCATE pdo_stmt_00000003 idle
10172 15 days 23:52:04.60968 DEALLOCATE pdo_stmt_00000003 idle
10174 15 days 23:52:04.604393 DEALLOCATE pdo_stmt_00000003 idle
10173 15 days 23:52:04.596357 DEALLOCATE pdo_stmt_00000003 idle
10175 15 days 23:52:04.591835 DEALLOCATE pdo_stmt_00000003 idle
答案 0 :(得分:2)
没有什么可担心的。您没有看到当前正在运行的语句,只有在该数据库会话中执行的最新语句(可能正如您所假设的那样,只需要几毫秒)。
有关state
列的可能值,请参见the documentation。