Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вопросы по NoLock и Read Uncommitted  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
Всем привет.
Есть несколько вопросов, скорее всего они дурацкие, но все же рискну их задать.

Верно ли что если в MS SQL Server выполнить запрос вида «Select * From Table With (NoLock)» то этот запрос будет выполнятся вне транзакции, т.е. транзакция открываться не будет?

И если выполнить запрос «Select * From Table» в транзакции с уровнем изоляции Read Uncommitted то поведение будет такое же как в запросе с указанием NoLock, но запрос уже будет выполнятся в транзакции.

Верно ли я все понимаю?
11 июн 15, 17:46    [17761717]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Андрей_Батькович,

В обоих случаях будет читающая транзакция. Причем в первом случае вы явно определяете режим удержания блокировок with(nolock). А во втором случае неявно заданием уровня изоляции read uncommitted. В обоих случая будет захвачена Sch-S на таблицу.
11 июн 15, 18:17    [17761849]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
для первого случая

create table t(id int);
go

insert into t(id) values(1),(2),(3);
go

select
	t.id, ct.*
from
	t with(nolock)
		cross apply
	sys.dm_tran_current_transaction ct with(nolock)
go
11 июн 15, 18:20    [17761856]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
churupaha,

Спасибо за ответ, а как увидеть начало читающей транзакции для NoLock, у меня Profiler не фиксирует транзакцию.
11 июн 15, 18:27    [17761870]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Андрей_Батькович,

17761856
11 июн 15, 18:29    [17761881]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
churupaha,

Я понял что транзакцию можно увидеть в представлении, но как ее увидеть в Profiler? Почему она там не отображается?
11 июн 15, 18:32    [17761889]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Андрей_Батькович
churupaha,

Я понял что транзакцию можно увидеть в представлении, но как ее увидеть в Profiler? Почему она там не отображается?


хз
11 июн 15, 18:33    [17761891]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
Пойдет?

К сообщению приложен файл. Размер - 8Kb
11 июн 15, 18:44    [17761923]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
msLex
Member

Откуда:
Сообщений: 8204
Андрей_Батькович
churupaha,

Я понял что транзакцию можно увидеть в представлении, но как ее увидеть в Profiler? Почему она там не отображается?

потому что в профайлере отображаются только стейтменты с явным управлением транзакциями.

К сообщению приложен файл. Размер - 44Kb
11 июн 15, 18:50    [17761932]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
до кучи

К сообщению приложен файл. Размер - 17Kb
11 июн 15, 18:56    [17761955]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
churupaha,

Странно, у меня почему то в профайлере TransactionID отображается для плана запроса, а не для самого события запроса.
12 июн 15, 12:08    [17763594]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Glory
Member

Откуда:
Сообщений: 104760
Андрей_Батькович
Странно, у меня почему то в профайлере TransactionID отображается для плана запроса, а не для самого события запроса.

Потому что для плана это System-assigned ID of the transaction.
А для запроса - ID of the transaction if the statement was run within a transaction.
12 июн 15, 12:22    [17763625]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Андрей_Батькович
Member

Откуда:
Сообщений: 82
Glory, спасибо за разъяснение.

Большое всем спасибо за ответы.
12 июн 15, 12:56    [17763707]     Ответить | Цитировать Сообщить модератору
 Re: Вопросы по NoLock и Read Uncommitted  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Андрей_Батькович
churupaha,

Спасибо за ответ, а как увидеть начало читающей транзакции для NoLock, у меня Profiler не фиксирует транзакцию.
Любой запрос в SQL Server выполняется в транзакции.
12 июн 15, 20:25    [17765231]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить