Управление параллелизмом в очередях - PullRequest
0 голосов
/ 16 июня 2011

Я проектирую базу данных, которая будет использоваться для хранения запросов для дальнейшей обработки.Когда происходит такая обработка, мне нужно выполнить хранимую процедуру для извлечения (SELECT) из представления тех запросов, которые можно обрабатывать , теперь и обновлять (UPDATE) соответствующие записи с флагом, указывающим, что они были получены потоком моего приложения.Однако, так как это будет сценарий с высоким уровнем параллелизма, могут произойти две вещи:

1) Новые запросы могут быть размещены так же, как я считываю записи из базы данных;

2) То же самоезапросы могут быть получены различными потоками моего приложения, если второй поток обращается к данным между моими операторами SELECT и UPDATE.

Проблема 1) на самом деле не является проблемой, так как эти запросы будут получены и обработаныболее поздним потоком, обращающимся к данным.Проблема, конечно, вторая ситуация, которую я должен избегать в меру своих возможностей.Как на самом деле убедиться, что никакой другой поток, обращающийся к базе данных, не может читать записи из используемого представления , пока оператор UPDATE не зафиксирован, сохраняя, однако, возможность добавлять строки в соответствующие таблицы (ситуация 1))?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...