小编Den*_*sov的帖子

大桌子的自动吸尘时间太长

我将 9.4 postgresql 集群升级到 9.6。(通过 pg_upgrade,所以我的 db stats 没有移动到新集群)我有一个大表(大约 450M 记录)。这个表在我的代码中经常使用(很多选择和更少的 upserts)。当我启动我的 postgres 服务时,Postgres 会自动启动 autovacuum,它会锁定我的桌子。所以我不能做任何事情:既不截断表也不手动分析它。我试图在我的配置文件中设置 autovacuum=off,但它没有帮助(为什么?!我当然重新启动了服务器)

更新:我的目标是尽快开始使用该表。截断会有所帮助(因为表将是空的),分析应该会有所帮助(Postgres 将开始使用适当的索引)

什么是最快的方法:1)截断表或 2)分析表?任何帮助将非常感激。

更新: 这是查看锁的查询的输出:

SELECT psa.pid,granted,query FROM pg_locks pl LEFT JOIN pg_stat_activity psa ON pl.pid = psa.pid where locktype='relation';


  pid  | granted | query                                                                                                                          
-------+---------+---------------------------

 11831 | t       | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
 11831 | t       | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
 11831 | t       | autovacuum: VACUUM ANALYZE public.ig_tasks_users (to prevent wraparound)
 11831 | …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.6 autovacuum

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

Ecto Model - select中的子查询

我需要使用Ecto进行此SQL查询:

SELECT users.*, (select count(0) from money_transactions where from_id = users.id AND created_at > '2016-1-25 0:00:00.000000') as money_transactions_today_db FROM "users" WHERE "users"."client_token" = '123'
Run Code Online (Sandbox Code Playgroud)

我尝试做这样的事情,但它不起作用:

query = from users in Like4uElixir.User,
        where: users.client_token in ^tokens,
        select: {users, (from money_transactions in Like4uElixir.MoneyTransaction,
                            where: money_transactions.from_id == users.id,
                            select: count(0))}
Run Code Online (Sandbox Code Playgroud)

Ecto是否支持子查询?如果没有,我该如何执行查询?

ecto phoenix-framework

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

Elixir:数组到函数参数

我是Elixir的新手.我使用redix库与Redis一起工作.我无法正确执行MGET命令.此代码有效:

Like4uElixir.RedixPool.command(["MGET", "a", "b", "c"])
Run Code Online (Sandbox Code Playgroud)

- 它从Redis返回3个值.但是这段代码不起作用:

keys = ["a", "b", "c"]
Like4uElixir.RedixPool.command(["MGET", keys])
Run Code Online (Sandbox Code Playgroud)

但我拥有数组中的所有键.如何将我的数组转换为许多函数参数?

elixir

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