SQL тупик в RDS от AWS Lambda - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть экземпляр SQL Server RDS, и я загружаю огромный файл Excel с заработной платой (от 500 записей / строк до 75000 записей / строк) по S3, который в конечном итоге вставляет записи заработной платы в AWS SQS (одна запись на сообщение).

У меня есть обработка .netcore Lambda, которая запускается SQS для вставки или обновления данных заработной платы.Ошибка обработки лямбда из-за тупика транзакции.Почти сообщения сбой с сообщением:

Транзакция (ID процесса 90) была заблокирована на ресурсы блокировки с другим процессом и была выбрана в качестве жертвы тупика.Повторите транзакцию.

Я не использую транзакции в своих инструкциях SQL.Есть ли способ обработать пул соединений или каким-то образом решить эту проблему.

Я пробовал несколько способов, таких как создание одного объекта соединения SQL и его использование в процессе обработки лямбда, но без прогресса.Я ссылался на несколько статей, в которых предлагается объявлять объект соединения SQL вне обработчика лямбда-обработки, потому что в большинстве случаев, когда происходит повторное выполнение, есть вероятность, что тот же самый лямбда-контейнер используется повторно (но не может быть уверен в этом).В этом случае можно повторно использовать один и тот же объект соединения Sql (ссылка: https://www.jeremydaly.com/reuse-database-connections-aws-lambda/). Но в моем случае это не помогло. Я попытался сохранить размер пакета SQS от 1 до 10 при запуске лямбда-обработки, но результат тот же.

...