【问题标题】:DEALLOCATE pdo_stmt it's taking to much time (days), is it normal?DEALLOCATE pdo_stmt 它需要很多时间(天),这正常吗?
【发布时间】:2018-06-04 09:31:50
【问题描述】:

我正在调试我的 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

【问题讨论】:

  • 你在用PgBouncer吗?
  • @Hackerman 不,我们没有使用PgBouncer。数据库托管在 AWS RDS 上。
  • postgresql.org/docs/current/static/… "idle: 后端正在等待新的客户端命令。"
  • @Abelisto 我不明白你的意思。你想说什么?
  • idle 状态表示 PostgreSQL (AWS) 处于空闲状态,正在等待来自客户端的下一条命令(SQL 语句)。所以看来问题不在于deallocate 语句,而在于中间/前端的一些“死”会话。

标签: postgresql laravel amazon-web-services amazon-rds postgresql-9.3


【解决方案1】:

没有什么可担心的。您没有看到当前正在运行的语句,只有在该数据库会话中执行的 最新 语句(并且可能,正如您正确假设的那样,只需要几毫秒)。

有关state 列的可能值,请参阅the documentation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-02
    • 2020-08-26
    • 1970-01-01
    • 2021-11-13
    • 2020-03-19
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多