来自AWS Lambda的RDS中的SQL死锁

时间:2019-04-23 14:03:26

标签: aws-lambda amazon-rds amazon-sqs

我有一个SQL Server RDS实例,我正在通过S3上传一个巨大的工资单excel文件(大约500条记录/行,到75000条记录/行),最终将工资条记录插入AWS SQS(每条消息一条记录)。

我有一个正在处理的.netcore Lambda,由SQS触发以插入或更新工资数据。由于事务死锁,处理lambda失败。几乎记录失败,并显示以下消息:

事务(进程ID 90)与另一个进程在锁资源上死锁,因此被选为死锁受害者。重新运行事务。

我的SQL语句中没有使用任何事务。有什么方法可以处理连接池或某种方法来解决此问题。

我尝试了一些方法,例如创建单个SQL连接对象并通过处理lambda来使用它,但没有任何进展。我提到了一些建议在处理lambda处理程序之外声明SQL连接对象的文章,因为在大多数情况下,当发生循环执行时,有可能重用相同的lambda容器(但不能确定)。在那种情况下,我可以让相同的Sql连接对象重用(参考:https://www.jeremydaly.com/reuse-database-connections-aws-lambda/)。但是,这对我的情况没有帮助。触发处理lambda时,我尝试将SQS批次大小保持为1到10,但结果相同。

0 个答案:

没有答案