NOLOCK и Coldfusion - PullRequest
       1

NOLOCK и Coldfusion

4 голосов
/ 13 сентября 2011

Сотрудник сообщил мне на днях, что использование NOLOCK в cfquery бессмысленно, если вы не включите запрос в cftransaction. Он утверждает, что SQL Server распознает NOLOCK только внутри транзакции и, следовательно, отсутствие запроса в пределах cftransaction делает избыточным NOLOCK.

Может кто-то подтвердить, правда это или нет, потому что во всех магазинах CF, в которых я работал, NOLOCK используется щедро, и редко когда-либо внутри cftransaction. Должен ли я думать, что все эти запросы во всех этих магазинах на самом деле не относятся к NOLOCK?

Ответы [ 3 ]

4 голосов
/ 13 сентября 2011

Все, что вам нужно сделать, это посмотреть на планы выполнения на вашем SQL Server, чтобы увидеть, соблюдают ли они NOLOCK или нет.Я могу подтвердить (из года использования), что NOLOCK действительно удостоен чести.Я бы не советовал (проверьте в READ_COMMITTED_SNAPSHOT_ISOLATION), но это определенно выполнено, с или без cftransaction.

3 голосов
/ 13 сентября 2011

Ваш коллега неверен, NOLOCK не является избыточным вне контекста cftransaction.

Если вы используете настройку по умолчанию в SQL Server, каждый выполняемый вами запрос переносится в транзакцию, независимо от того,Вы явно напечатали это или нет.Это называется " режим автоматической фиксации ".

0 голосов
/ 13 сентября 2011

У Бена Наделя есть отличное объяснение, а также пара справочных статей, которые объясняют использование NOLOCK гораздо лучше, чем я.Однако вам не нужно использовать NOLOCK внутри транзакции, чтобы получить прирост производительности.

http://www.bennadel.com/blog/477-SQL-Server-NOLOCK-ROWLOCK-Directives-To-Improve-Performance.htm

Надеюсь, это поможет!John

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