У меня есть база данных sql server, в которой я использую хранимые процедуры для вставки новых данных из приложения. Мне интересно, что мне нужно сделать, чтобы убедиться, что правильно использовать несколько потоков для одновременного правильного / безопасного вызова хранимых процедур в моей БД.
Возможная проблема параллелизма связана с корректностью. Я вызываю несколько хранимых процедур из интерфейса уровня данных, и каждая хранимая процедура (и другая хранимая процедура, которую они вызывают) выполняет свои обновления в нескольких таблицах базы данных способами, которые могут нарушать правильность структуры таблицы, если они выполняются одновременно любым «способом чередования» (например, из SP_1 я вставляю различные элементы в Table1 или Table2 в зависимости от некоторых условий, связанных с существованием некоторого элемента y в Table2)
Мне кажется, что (используя способ определения таблиц), чтобы сделать программу правильной, я должен видеть, что все действия хранимой процедуры выполняются изолированно, чем любая другая операция, которая может быть вызвана одновременно (операции, вызываемые с использованием доступа к данным) интерфейс слоя).
Может ли одна большая транзакция (которая включает в себя все, что делается как часть вызова интерфейса DAL) помочь мне исправить программу с точки зрения БД при наличии одновременных вставок? Я не вижу (если решение могло бы быть жизнеспособным), как это могло бы улучшить больше, чем, скажем, подход взаимного исключения, когда только один поток в данный момент мог бы сделать необходимые вставки в таблицы базы данных одновременно ...