Лучший способ справиться с блокировкой функции ALTER PARTITION, поскольку вы не можете использовать WAIT_AT_LOW_PRIORITY? - PullRequest
0 голосов
/ 10 февраля 2020

SQL Server 2014 предлагает wait_at_low_priority, чтобы вы могли убивать блокировщики. Однако он не работает с ALTER PARTITION FUNCTION, что вызывает проблемы (невозможно добавить будущие разделы, если запрос имеет блокировку схемы).

Каков рекомендуемый способ его реализации?

Это не будет работать:

ALTER PARTITION FUNCTION pf_mytable() SPLIT RANGE ('20200214') 
WITH (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 1 MINUTES, ABORT_AFTER_WAIT = BLOCKERS));

Глядя на мой код (у меня есть Add-new-section и drop-old-partition как отдельные задания), код для удаления старых разделов делает SWITCH / TRUNCATE /MERGE.

ALTER TABLE mytable SWITCH PARTITION 2 TO mytable_aux  PARTITION 2 ;  
TRUNCATE TABLE mytable_aux  
ALTER PARTITION FUNCTION pf_mytable()  MERGE RANGE (@Day_REQ) ;  

Есть ли какой-то шаблон или лучшая практика, которая рекомендуется? Я думал только о том, чтобы запустить задание DROP OLD PARTITION (с новым WAIT_AT_LOW_PRIORITY для уничтожения блокировщиков) перед заданием ADD NEW PARTITION или изменить код ADD NEW PARTITION, чтобы выполнить «фальшивый» обмен на будущих разделах.

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