嗨,我有一个Postgres表,当用户登录到我的应用程序时被写入。查询对冲突执行插入。每秒大约被调用150次,我看到很多时间花在锁等待上。
查询本身的平均执行时间约为50ms。
是否有更好的方法来改进我的查询以减少锁等待?
有两个表:
ID UUID (UUID) PK | 标识符(varchar(100)) | name | project (UUID FK) | TeamAttributes (json) | abcd - 2343 errere | 鲍勃 | 鲍勃 | 34543-54545-435435-5345 | Squad1 | {"标签":"年龄":29日['一']} |
---|---|---|---|---|---|
3432-2343-234342 | 乔治 | 乔治 | 34543-54545-435435-5345 | Squad1 | {"年龄":43岁的"标签":[‘十’]} |
234343-42343-4324324 | 约翰道明> | 23434-234-4234324-432 | Squad2 | {"年龄":54岁的"标签":[' 2 ']} |
你可以做两件事来改善这一点:
-
使语句更快,可能通过减少表上的索引和触发器的数量,或者通过获得更快的硬件
-
查看该语句在事务中尽可能晚的时候被调用,以便该行上的锁被持有的时间尽可能短