在Postgres中批量插入时死锁

时间:2016-11-12 10:25:32

标签: ruby-on-rails database postgresql

  

PG :: TRDeadlockDetected:错误:检测到死锁\ nDETAIL:进程5449   在交易1712360上等待ShareLock;被进程阻止   1325. \ nProcess 1325在事务1712346上等待ShareLock;被进程5449阻止。\ nHINT:请参阅服务器日志以查询   详细信息。\ nCONTEXT:插入索引元组(663142,4)时   “接触” \ N:

在表上执行并发批量插入时获取死锁联系人。 此表还对列电话具有唯一约束。 ,此表上还有并行读数。

查询发生的死锁是

SELECT REF_NO,min(LEDGERNAME) as 'BY',MAX(LEDGERNAME) as 'TO',AMOUNT
  FROM [yourtable]
  GROUP BY REF_NO,AMOUNT

此表的主键是uuid,默认值为INSERT INTO contacts (phone, name, email, external_id, created_at, updated_at) VALUES #{values} ON CONFLICT DO NOTHING; where values is list of tuples(phone, name, email, external_id, created_at, updated_at) of size 300 to 400.

0 个答案:

没有答案