小编Pau*_*tto的帖子

提高 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
查看次数