标签: postgresql

提高 Postgres 中时间戳列的并发更新性能

我正在使用一个称为updated_at缓存失效的时间戳列。此处提供有关此特定技术的更多信息。

查询都具有相同的格式

UPDATE "managers" SET "updated_at" = '2014-07-25 15:00:24.212512' WHERE "managers"."id" = 1

问题是此列上的活动过多,导致写入缓慢。我假设减速是由锁定机制引起的。列上没有索引。

我们一直试图通过将可能导致多次更新的操作批处理来缓解这种情况,这确实有所帮助,但整个系统仍然受到影响。

  1. 不同类型的列会更快吗?例如一个整数。
  2. 有什么方法可以不锁定列吗?
  3. 任何其他提示来改善这一点?

我们实际上正在考虑将其移至 redis 并使用 INCR。

                                            表“public.managers”
         专栏 | 类型 | 修饰符
-------------------------+------------------------ -----+-------------------------------------------- -----------------
 身份证 | 整数 | 非空默认 nextval('leads_managers_id_seq'::regclass)
 account_id | 整数 |
 created_at | 没有时区的时间戳 |
 更新时间 | 没有时区的时间戳 |
 通知_收件人| 文字 | 默认 ''::character 变化
 用户名 | 字符变化(255) |
索引:
    “leads_managers_pkey”主键,btree (id)
    "index_leads_managers_on_uuid" UNIQUE, btree (uuid)
    "index_leads_managers_on_account_id" btree (account_id)

postgresql concurrency locking update postgresql-9.3

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

如何从命令行使用 psql 为 SQL 查询计时?

已经有一个问题“如何使用 psql 为 SQL 查询计时? ”但我缺少如何从命令行执行此操作的答案。如何从命令行运行带有(可选)计时\timing [on|off]的脚本- 请不要在脚本中运行?

postgresql performance psql query-performance

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

双精度的总和给出了奇怪的结果

我一直在计算包含大约 500.000 条双精度数字记录的列的总和。数据库中的所有数字通常应该是句点后面的两个密码。但是,在计算总和后,我得到了 6 个数字:123123123.549977

要么我的数据库中有错误的数据,其中在句点之后有更多数字的记录,要么我遗漏了 sum 函数。

所以我的问题是:

  • sum 函数是否有任何可能导致这种情况的舍入属性?
  • 有没有办法选择句点后包含两个以上数字的所有记录?

postgresql sum

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

PostgreSQL。生成随机整数集

使用此命令,我可以生成 1 和 200,000 之间的 16384 个随机整数。

SELECT generate_series (1,16384),(random()*200000)::int AS id
Run Code Online (Sandbox Code Playgroud)

我想生成 10 组这样的整数。每个集合必须有一个整数标识符,类似于:

1 | 135

1 | 1023

...第一组 16384 个随机数结束

2 | 15672

2 | 258732

... 第二组 16384 个随机数结束

这可以通过 SQL 命令实现,还是我应该为此编写一个函数?

postgresql random postgresql-9.3

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

在 Postgresql 中从 HSTORE 中删除密钥

目前我有一个 hstore 来描述各种项目的属性。搜索时,我需要删除每个项目唯一的值(例如序列号、vin 等)。根据 postgresql 文档,我应该能够使用以下运算符从 hstore 中删除密钥

根据 postgres 文档 hstore - text delete key from left operand 'a=>1, b=>2, c=>3'::hstore - 'b'::text

在我的代码中,我有

IF item.details ? 'vin' THEN item.details::hstore - 'vin'::TEXT; END IF;

当我去创建函数时,我收到语法错误

'“::”处或附近的语法错误'

当我从值的末尾删除类型声明时,我收到错误

'“-”处或附近的语法错误'

据我所知,这符合 postgres 文档所说的操作员应该在http://www.postgresql.org/docs/9.3/static/hstore.html 上工作的方式。有什么我想念的吗?

postgresql hstore operator

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

Postgres 9.1 中的 ACID 违规?

我正在使用 Postgres DB 为大量计算机/进程实现作业调度。简而言之,每个作业都有其 id,所有调度都通过三个选项卡实现:所有作业、当前正在运行的作业和已完成的作业。

调度的关键功能是 (1) 请求作业和 (2) 通知 DB 已完成的作业。请求作业从作业列表中获取任何 id,它不在运行表中,也不在已完成表中:

insert into piper.jobs_running
select x.fid from ( 
  SELECT fid FROM piper.jobs
  except 
  select fid from piper.jobs_running
  except 
  select fid from piper.jobs_completed
 ) as x limit 1
returning(fid)
Run Code Online (Sandbox Code Playgroud)

完成作业会将其从运行列表中删除,并将其插入到已完成列表中。因为它不是特定于并发的,所以我省略了 SQL 命令(完成一项工作需要几十分钟到几个小时。)

对我来说,这是一个令人讨厌的惊喜,上面运行完全相同的查询的两个进程(几乎同时请求作业)可能会获得相同的作业 ID (fid)。我要提出的唯一可能的解释是 Postgres 不依赖 ACID 一致性。注释?

附加信息:我将事务设置为可序列化(在postgresql.conf 中 set default_transaction_isolation = 'serializable')。现在,如果隔离未完全填充,DBMS 会使事务失败。是否可以强制 Postgres 自动重新启动它们?

postgresql concurrency postgresql-9.1 acid except

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

基于 nfs 的 Postgresql 集群

我可以通过 NFS 使用两个不同的节点创建一个 HA postreges 集群吗?

根据 postgresql 9.4 官方文档,这不是一个好主意,但我在网上找不到任何其他信息。

postgresql

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

如何确定 pgAgent 是否安装在 Postgres 实例上?

我继承了一些问题,我需要确定 pgAgent 是否存在于一定数量的安装 (CentOS) 上并且正在运行后台作业。这些作业可以从 cron、pgAgent 或外部调用者运行。

如果我正在查看 postgres 实例而不使用 pgAdmin,我如何确定是否安装了 pgAgent?

这可以从命令行或psql客户端完成吗?如果可能的话,我更喜欢 pgAdmin。

postgresql

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

使用实体化视图

我有一个物化视图,创建大约需要 57 秒,并且我使用的是 PostgreSQL 9.4。

当我插入表时,触发器将调用触发器函数,该函数将REFRESH MATERIALIZED VIEW CONCURRENTLY view触发触发器after each statement(插入、更新、删除)

发生的情况是,执行插入操作大约需要 57 秒。

如何解决此问题并仍然使用物化视图?

我已经实现了很长时间,从来没有出现过这个问题,最近我添加了pgbouncer,会不会是这个原因?

postgresql materialized-view pgbouncer postgresql-9.4

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

在 Postgres 中查找特定查询的 CPU 利用率的工具

我只想知道是否有任何免费工具可以识别 PostgreSQL 中特定查询的 CPU 利用率。

postgresql

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