小编Axe*_*man的帖子

postgres“事务空闲”13小时

我们最近看到一些查询“在事务中空闲”很长一段时间

 pid  | usename |        state        | duration | application_name | wait_event | wait_event_type
------+---------+---------------------+----------+------------------+------------+----------------
31620 | results | idle in transaction | 12:52:23 | bin/rails        |            |                
Run Code Online (Sandbox Code Playgroud)

这相当于交易闲置了近 13 个小时。

知道是什么导致他们陷入闲置状态,或者如何深入挖掘?我们确实注意到后台作业出现一些 OOM 错误。

还有很多“空闲”查询,但感谢您的评论,这些似乎很好: postgres 中的空闲事务

postgresql“事务中空闲”中,所有锁都被授予@LaurenzAlbe指出空闲会话超时配置选项是一个创可贴,但我宁愿理解这个问题而不是隐藏它。

谢谢!

PS:我们的应用程序是 ruby​​ on Rails,我们混合使用活动记录和自定义 SQL

编辑:原始标题是“事务中空闲”,查询实际上大部分时间都是空闲的,而不是在事务中,对此感到抱歉

编辑 #2:发现交易过程中有 13 小时空闲

postgresql

5
推荐指数
1
解决办法
7798
查看次数

无法在Rails测试环境中使用TimescaleDB

我被困在 Rails 中使用 TimescaleDB - 开发中一切正常,但在我的测试套件中我无法插入任何数据。

我尝试过的

A) 使用 SQL 模式转储

这导致了我看到的原始错误消息。它确实为 TimescaleDB 创建了部分架构,但不是全部。我有一个超表,但它无法正常工作

B) 使用 Ruby 架构转储

这让我可以插入到我的表中,但它根本不是超表 - ruby​​ 语法丢失了与 TimescaleDB 和超表相关的所有内容。

C) 直接迁移测试数据库

我尝试避免 schema.struct 转储并加载以下内容:

$ rails db:drop
Dropped database 'my_app_development'
Dropped database 'my_app_test'
$ RAILS_ENV=test rails db:create
Created database 'my_app_test'
$ RAILS_ENV=test rails db:migrate
== 20200517164444 EnableTimescaledbExtension: migrating =======================
-- enable_extension("timescaledb")
WARNING:  
WELCOME TO
 _____ _                               _     ____________  
|_   _(_)                             | |    |  _  \ ___ \ 
  | |  _ _ __ ___   ___  ___ …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails timescaledb

3
推荐指数
1
解决办法
4020
查看次数