|
Блокировки IX и X. Как запретить эскалацию блокировок до уровня таблицы
|
|||
---|---|---|---|
#18+
Добрый день Есть процедура, которая делает множество операций и в конце открывается явная транзакция со вставкой данных в несколько таблиц (Данные по серверам ниже) Типо того: ALTER procedure [dbo].[test] as BEGIN ---операции по подготовки #Table_DataN--- begin tran insert into Table1(...) select ... from #Table_Data1 insert into Table2(...) select ... from #Table_Data2 insert into Table3(...) select ... from #Table_Data3 commit end Вопросы: 1. Нужно запретить эскалацию блокировки до уровня таблицы для всех таблиц Table1-Table3? Кол-во строк в таблицах примерно 15-20 млн. Вставка за раз строк 100-40000. Это нужно на рабочем сервере. 2. Есть два сервера (рабочий и тестовый) с БД. Базы и запросы одинаковы. На рабочем по блокировкам (последняя колонка кол-во блокировок): 86 Work 630293305 Table1 10 5 TAB X GRANT 1 86 Work 630293305 Table1 12 6 PAG X GRANT 35 86 Work 630293305 Table1 13 6 PAG X GRANT 94 86 Work 630293305 Table1 14 6 PAG X GRANT 69 86 Work 630293305 Table1 15 6 PAG X GRANT 15 86 Work 630293305 Table1 114 6 PAG X GRANT 9 86 Work 630293305 Table1 116 6 PAG X GRANT 29 86 Work 630293305 Table1 117 6 PAG X GRANT 94 На тестовом по блокировкам(последняя колонка кол-во блокировок): 66 test 630293305 Table1 0 5 TAB IX GRANT 1 66 test 630293305 Table1 1 6 PAG IX GRANT 1 66 test 630293305 Table1 1 6 PAG X GRANT 1801 66 test 630293305 Table1 2 6 PAG IX GRANT 3 66 PM 630293305 Table1 2 6 PAG X GRANT 158 66 test 630293305 Table1 3 6 PAG IX GRANT 2 66 test 630293305 Table1 3 6 PAG X GRANT 206 66 test 630293305 Table1 4 6 PAG IX GRANT 1436 66 test 630293305 Table1 4 6 PAG X GRANT 105 66 test 630293305 Table1 5 6 PAG IX GRANT 2 66 test 630293305 Table1 5 6 PAG X GRANT 80 66 test 630293305 Table1 14 6 PAG IX GRANT 3 66 test 630293305 Table1 14 6 PAG X GRANT 78 66 test 630293305 Table1 16 6 PAG IX GRANT 1 66 test 630293305 Table1 16 6 PAG X GRANT 136 66 test 630293305 Table1 17 6 PAG IX GRANT 3 66 test 630293305 Table1 17 6 PAG X GRANT 206 66 test 630293305 Table1 1 7 KEY X GRANT 11 66 test 630293305 Table1 2 7 KEY X GRANT 251 66 test 630293305 Table1 3 7 KEY X GRANT 323 66 test 630293305 Table1 4 7 KEY X GRANT 1194 66 test 630293305 Table1 5 7 KEY X GRANT 79 66 test 630293305 Table1 14 7 KEY X GRANT 365 66 test 630293305 Table1 16 7 KEY X GRANT 163 66 test 630293305 Table1 17 7 KEY X GRANT 329 Получается 2017 умнее 2016 и не блокирует всю таблицу??? На рабочий не могу поставить 2017 - это не мое требование. Сервер рабочий: Microsoft SQL Server 2016 (SP2-CU10) (KB4524334) - 13.0.5492.2 (X64) Oct 4 2019 19:14:08 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor) Сервер тестовый: Microsoft SQL Server 2017 (RTM-CU19) (KB4535007) - 14.0.3281.6 (X64) Jan 23 2020 21:00:04 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Linux (Ubuntu 18.04.4 LTS) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 11:30 |
|
Блокировки IX и X. Как запретить эскалацию блокировок до уровня таблицы
|
|||
---|---|---|---|
#18+
Эскалация отключается через alter table. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.05.2020, 11:34 |
|
|
start [/forum/topic.php?fid=46&msg=39956715&tid=1686137]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
others: | 282ms |
total: | 390ms |
0 / 0 |