Могу ли я ограничить блокировку отдельными циклами внутри курсора SQL - PullRequest
0 голосов
/ 26 августа 2009

У меня есть работа над большой базой данных, которая в основном требует вызова хранимого процесса с различными параметрами для каждого значения в таблице (около 20 тыс. Записей). Я хочу сделать это, не блокируя эту таблицу или другие таблицы, задействованные в каждом цикле, на время, необходимое для запуска всего процесса. Возможно ли изнутри SQL ограничить транзакции отдельными циклами над курсором?

Мне будет довольно просто вручную проверить, были ли внесены изменения в таблицу, над которой я зацикливался после завершения процесса, и снова запустить ее для новых записей, поэтому меня не беспокоит отслеживание изменений в этой таблице. .

Ответы [ 2 ]

0 голосов
/ 28 августа 2009

Я бы предположил, что циклический просмотр 20000 записей - плохой выбор. Лучше заменить хранимый процесс решением на основе множеств. Вы должны избегать использования курсоров.

0 голосов
/ 26 августа 2009

Вы можете установить уровень изоляции транзакции для чтения без передачи. но будьте уверены, что это действительно то, чего вы действительно хотите, поскольку вы можете получить грязное чтение, потерянные обновления, фантомные обновления и т. д.

...