Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
invmTaPaKа откуда она возьмётся?Мы рассматриваем работу в однопользовательском режиме? нет, но ситуация кто первый встал у того и все тапки случится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 12:56 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
TaPaKinvmпропущено... Мы рассматриваем работу в однопользовательском режиме? нет, но ситуация кто первый встал у того и все тапки случится? При параллельном запуске этого скрипта (даже с непересекающимися ID) эскалация будет невозможна из-за IU на таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:09 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
TaPaKно ситуация кто первый встал у того и все тапки случится?Это про эскалацию? Случится, если на уровне таблице, на момент попытки эскалации, не будет ни одной чужой I*. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:13 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
invmЭто про эскалацию? Случится, если на уровне таблице, на момент попытки эскалации, не будет ни одной чужой I*. IS допустимы, они вполне с U "уживаются" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:14 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
msLexTaPaKпропущено... нет, но ситуация кто первый встал у того и все тапки случится? При параллельном запуске этого скрипта (даже с непересекающимися ID) эскалация будет невозможна из-за IU на таблице. это понятно, но у него немерянная транзакция с какими-то 15 мержами, и первая легко схватит всю таблицу и остальные дружно встанут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:20 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
TaPaKи первая легко схватит всю таблицу и остальные дружно встанут если успеет, мы же говорим про параллельное выполнение. к тому же, не каждый же поток будет добираться до 5000 заблокированных строк, так что "маленькие" порции будут намертво блокировать эскалацию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:27 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
TaPaKи первая легко схватит всю таблицуНа основании чего? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:27 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
invmTaPaKи первая легко схватит всю таблицуНа основании чего? того что на момент удаления никто больше с ней не конкурирует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:32 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
msLexIS допустимы, они вполне с U "уживаются"Только вот эскалация U будет до X, ибо U на таблицу не бывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:47 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
TaPaKтого что на момент удаления никто больше с ней не конкурируетТ.е. таки рассматриваем вариант вообще без конкуренции, даже без читателей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:52 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
invmTaPaKтого что на момент удаления никто больше с ней не конкурируетТ.е. таки рассматриваем вариант вообще без конкуренции, даже без читателей? ну отсюда не видно что же там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.03.2018, 13:53 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток! Подскажите пожалуйста, почему запись вида Код: sql 1. 2. 3. 4. 5. 6. ил просто Код: sql 1. 2. делает кучу блокировок с TYPE = KEY (ровно столько, сколько групп в организации), причем блокируется именно индекс IX_tbGroup_OrgId, вместо того, чтобы сделать 1 блокировку на диапазон. Тем самым запрашиваемый диапазон действительно защищен от удаления и частично от обновления (от обновления поля OrgId), но не защищен от добавления групп в ту же самую организацию (правда пока до конца неизвестно, нужно ли это вообще). И все же интересно, как заставить сервер блокировать именно диапазон ключей индекса, в том числе и от вставки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:54 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
зачем вам нужна блокировка на вставку в некий диапазон ключа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 12:56 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Шамиль ФаридовичИ все же интересно, как заставить сервер блокировать именно диапазон ключей индекса, в том числе и от вставки? 21268301 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:08 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
invmmsLexIS допустимы, они вполне с U "уживаются"Только вот эскалация U будет до X, ибо U на таблицу не бывает. Хмм, действительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 13:11 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
msLex, спасибо, работает, sp_lock показывает, что сменился режим блокировки на RangeS-U, правда я вижу всю ту же кучу блокировок, вместо одной. Впрочем, у sp_lock в столбце type нет разделения между блокировкой по ключу и диапазону ключей. Интересна еще одна вещь: на тестовых где в таблице tbGroup чуть больше 5000 строк, запрос вида Код: sql 1. 2. вызывает 5000 блокировок с уровнем гранулярности = KEY. Почему сервер не поднимает его до уровня таблицы, ну или хотя бы страниц? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:20 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Шамиль Фаридович, Каждая хранимая процедура создаст свой экземпляр #tbGroup. От кого вы хотите заблокировать таблицу, от самого себя? :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:31 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Режимы блокировки: https://technet.microsoft.com/ru-ru/library/ms186396(v=sql.105).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:35 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Совместимость блокировок (компонент Database Engine): https://technet.microsoft.com/ru-ru/library/ms186396(v=sql.105).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:35 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Шамиль ФаридовичmsLex, спасибо, работает, sp_lock показывает, что сменился режим блокировки на RangeS-U, правда я вижу всю ту же кучу блокировок, вместо одной. Впрочем, у sp_lock в столбце type нет разделения между блокировкой по ключу и диапазону ключей. Интересна еще одна вещь: на тестовых где в таблице tbGroup чуть больше 5000 строк, запрос вида Код: sql 1. 2. вызывает 5000 блокировок с уровнем гранулярности = KEY. Почему сервер не поднимает его до уровня таблицы, ну или хотя бы страниц? 1. 5к блокировок это нечто вроде "по умолчанию", сервер расчитывает количество от нескольких параметров 2. до страниц эскалации не бывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:35 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Блокировка диапазона ключей: https://technet.microsoft.com/ru-ru/library/ms191272(v=sql.105).aspx ЗЫ это просто , чтобы народ мог посмотреть как в справочник, если вдруг нить рассуждений в текущем топике потерял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 14:37 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Шамиль Фаридовичспасибо, работает, sp_lock показывает, что сменился режим блокировки на RangeS-U, правда я вижу всю ту же кучу блокировок, вместо одной Это потому, что реальный ключ неуникального индекса IX_tbGroup_OrgId (OrgId, <clustered index key>) и Range блокировки накладываются именно на него. Шамиль Фаридовичвызывает 5000 блокировок с уровнем гранулярности = KEY. Почему сервер не поднимает его до уровня таблицы, ну или хотя бы страниц? До станицы, как вам уже сказали, сервер не эскаликует блокировки, только если сразу их выберет (можно ему помочь через paglock) А до таблицы мешает любой активный селекет к данным из таблицы (если у вас не RCSI) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 15:32 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Шамиль ФаридовичИ все же интересно, как заставить сервер блокировать именно диапазон ключей индекса, в том числе и от вставки?Не бывает блокировки диапазона в таком виде, в каком вы его себе представляете - одна блокировка на произвольный диапазон ключей. Блокировка диапазона в MSSQL - это блокировка (предыдущий ключ, ключ] и применяется исключительно для защиты от добавления строк в названный диапазон, чтобы обеспечить правильную работу на TIL serialiazable. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.03.2018, 16:18 |
|
||
|
Заблокировать таблицу от удаления до конца транзакции
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы! Задача немного усложнилась. Всю постановку передавать не буду, сконцентрируюсь на одной из подзадач: необходимо в начале транзакции вставлять в таблицу Код: sql 1. 2. 3. 4. записи из таблицы #tbEventToGroup(EventId int, tbGroupId...) и защитить до конца транзакции tbEventCalculationList от вставки конкурирующими транзакциями строк с EventId из #tbEventToGroup, то есть мне нужно что-то вроде Код: sql 1. 2. 3. 4. Проблема в том, что ругается на подсказку про индекс: Код: sql 1. И я что-то не соображу, как засунуть хинт с индексом в предложение OPTION. Или INSERT вообще не позволяет таких вещей, и я смогу диапазон ключей только после вставки и вызова подходящего предложения SELECT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2018, 11:12 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39618249&tid=1689980]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 343ms |

| 0 / 0 |
