Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update cte какая блокировка наложится на базовую таблицу?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Какая блокировка будет наложена на таблицу T при таком update:
UPDATE  V 
SET a =5
	 FROM   (
		               SELECT  TOP 10 * FROM T
ORDER BY 2,1) V


из вариантов:
1. UPDATE
2. SELECT а ЗАТЕМ UPDATE

Соответственно если сначала SELECT то два параллельных запроса могут получить одни данные, а запдейтить сможет только один. Либо к таблице будет только одно обращение на updfate?
12 авг 16, 13:41    [19534093]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
Правильнее пример такой
UPDATE  V 
SET a =5
	 FROM   (
		               SELECT  TOP 10 * FROM T
WHERE a != 5
ORDER BY 2,1) V
12 авг 16, 13:41    [19534102]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
BERSERC,

проверьте профайлером или DMV
12 авг 16, 14:06    [19534297]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
msLex
Member

Откуда:
Сообщений: 9290
BERSERC
Какая блокировка будет наложена на таблицу T при таком update:
UPDATE  V 
SET a =5
	 FROM   (
		               SELECT  TOP 10 * FROM T
ORDER BY 2,1) V


из вариантов:
1. UPDATE
2. SELECT а ЗАТЕМ UPDATE

Соответственно если сначала SELECT то два параллельных запроса могут получить одни данные, а запдейтить сможет только один. Либо к таблице будет только одно обращение на updfate?

Вид блокировок зависит не только от запроса но и от существующих индексов
12 авг 16, 14:20    [19534418]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
BERSERC,

что такое 2,1? Всегда одно и то же, да?
12 авг 16, 14:22    [19534438]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
msLex
Member

Откуда:
Сообщений: 9290
iap
что такое 2,1?

номера колонок
12 авг 16, 14:23    [19534444]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
Pavel1211
Member

Откуда: Екатеринбург
Сообщений: 205
msLex,

Я думаю iap об этом знает и намекает, что это плохая практика указывать номера колонок ))
12 авг 16, 14:25    [19534454]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Pavel1211
msLex,

Я думаю iap об этом знает и намекает, что это плохая практика указывать номера колонок ))
Особенно, если в SELECTе - *

Завтра поменяется порядок полей, и что будет?
12 авг 16, 14:27    [19534463]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
BERSERC
Member

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

Это пример, любое название колонок смысл в том будет ли сразу блокировка на update или сначала будет поиск select
12 авг 16, 14:32    [19534487]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
msLex
Member

Откуда:
Сообщений: 9290
Pavel1211
Я думаю iap об этом знает и намекает

я то вообще в этом уверен, но совсем не понял сути притензий, это же явно тестовый пример

таблица T, поле V не смущают, order by 2,1 смущает
странно
12 авг 16, 14:37    [19534522]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
BERSERC,

при поиске будет update (U), непосредственно при изменении exclusive (X).
12 авг 16, 14:42    [19534542]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
msLex
Member

Откуда:
Сообщений: 9290
daw
BERSERC,

при поиске будет update (U), непосредственно при изменении exclusive (X).

нет, не всегда


например в этом примере всегда будет сразу X
create table #t (id int not null primary key, f int)

update #t set f = 1 where id = 2
12 авг 16, 15:39    [19534854]     Ответить | Цитировать Сообщить модератору
 Re: Update cte какая блокировка наложится на базовую таблицу?  [new]
BERSERC
Member

Откуда:
Сообщений: 442
daw,спасибо!
12 авг 16, 16:22    [19535052]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить