我正在调试我的 PostgreSQL 数据库,发现 7 个针对“DEALLOCATE pdo_stmt”的查询已经运行了 15 天。
阅读 PostgreSQL 文档,我看到这些查询应该在 session 结束后取消分配准备好的语句,但我无法相信它会花费这么多时间。
此外,公司的其他项目发现相同的查询运行了异常长的时间。
数据库托管在 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
最佳答案
没有什么可担心的。您没有看到当前正在运行的语句,只有在该数据库 session 中执行的最新语句(并且可能,正如您正确假设的那样,只花费了几毫秒)。
参见 the documentation state
列的可能值。
关于postgresql - DEALLOCATE pdo_stmt 需要很长时间(几天),这正常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929471/