Проблема с зависимостями фиксации транзакции для таблиц, оптимизированных для памяти - PullRequest
3 голосов
/ 27 марта 2020

Я работаю с SQL Server 2016 и работаю с большой группой sprocs, которые все вызываются одним родительским spro c. Все sprocs ничего не делают, кроме чтения, чтобы вернуть один набор результатов. Я подтвердил, что все необходимые объекты находятся в кеше, и никаких физических чтений не происходит. Все чтения выполняются по индексам без сканирования таблицы. Этот процесс имел временные таблицы повсюду. Чтобы ускорить этот процесс, я заменил все временные таблицы на оптимизированные в памяти таблицы только с долговечностью схемы. После этого, под нагрузкой, я вижу, что веб-API часто регистрируется.

Transaction exceeded the maximum number of commit dependencies and the last statement was aborted. Retry the statement. The statement has been terminated.

Ни одна из sprocs не использует транзакции. Я немного погуглил, но все еще борюсь с этим сообщением.

1 Ответ

2 голосов
/ 31 марта 2020

Как упоминается в документации от Microsoft, вам нужно поставить delete from MemOptimizedTable там, где у ваших подручных было бы create #TempTable. Я думал, что сделал это, но в итоге я упустил одно место, которое вызывало столкновения. После добавления этого дополнительного удаления все в порядке.

...