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

Откуда: Сидней
Сообщений: 1197
Уважаемые,

Мне нужно разбить некоторые таблицы на партиции по месяцам. Для этого надо добавить в кластерный индех, он же праймари ки, столбец с датой. Чтобы пересоздать этот кластерный индех, надо временно удалить несколько FK, которые надо пересоздать позже включив туда столбец даты, чтобы FK имел ту же структуру, что и кластерный индех, на который он указывает.

Система работает 24.7, ночью естественно нагрузка гораздо ниже, но она есть. На самом первом шаге (удаление FK) процесс блокируется другими процессами и сидит, ничего не делая бесконечно, блокируя другие процессы.

У FK нет опции "online". Даунтайм получить трудно. Есть ли другие варианты?

Мы используем SQL Server 2008 R2 SP2.

Спасибо.
21 апр 15, 08:41    [17542209]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
На самом первом шаге (удаление FK) процесс блокируется другими процессами и сидит, ничего не делая бесконечно, блокируя другие процессы.

Вы что-то не договариваете.
Не может процесс ожидать блокировок бесконечно.
Как только предыдущий процесс снимет блокировку, то сразу же ваш процесс продолжиться
21 апр 15, 08:47    [17542233]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Система 24/7, как только один процесс завершается, появляется другой и удаление FK блокируется новым процессом.

Я 40 минут ждал пока один FK удалится, так и не дождался.
21 апр 15, 09:15    [17542344]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
Я 40 минут ждал пока один FK удалится, так и не дождался.

Вы ждали процесс, который ждал другой процесс что ли ?
так можно и всю жизнь ждать
21 апр 15, 09:17    [17542353]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
Система 24/7, как только один процесс завершается, появляется другой и удаление FK блокируется новым процессом.

Так не бывает
Процессы выстраиваются в очередь
Не может запрос, пришедший позже и претендующий на те же объекты, выполниться раньше пришедшего ранее процесса
21 апр 15, 09:18    [17542364]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Glory
Roust_m
Система 24/7, как только один процесс завершается, появляется другой и удаление FK блокируется новым процессом.

Так не бывает
Процессы выстраиваются в очередь
Не может запрос, пришедший позже и претендующий на те же объекты, выполниться раньше пришедшего ранее процесса


Охотно верю. Почему тогда удаление FK висит бесконечно? Есть другое объяснение?
21 апр 15, 09:20    [17542375]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
Охотно верю. Почему тогда удаление FK висит бесконечно? Есть другое объяснение?

Потому что вы тупите и не ищите настоящую причину
21 апр 15, 09:22    [17542386]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Glory
Roust_m
Охотно верю. Почему тогда удаление FK висит бесконечно? Есть другое объяснение?

Потому что вы тупите и не ищите настоящую причину


Вот так, прямо сразу в лоб. Люблю прямолинейных людей. Тем не менее задачу этот коммент не решает.

Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.
21 апр 15, 09:34    [17542438]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.

А еще Принц Уэльский сидит за соседним столом
21 апр 15, 09:38    [17542452]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Glory
Roust_m
Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.

А еще Принц Уэльский сидит за соседним столом


Эх, блин, точно, сидит. :)
21 апр 15, 09:49    [17542499]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Вот такая вот содержательная беседа получилась.
21 апр 15, 09:57    [17542534]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Roust_m
Вот такая вот содержательная беседа получилась.

Особенно она содержательна в доказательной части ваших утвержедний о том, кто, кого и сколько блокирует
21 апр 15, 10:03    [17542563]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
Glory
Roust_m
Вот такая вот содержательная беседа получилась.

Особенно она содержательна в доказательной части ваших утвержедний о том, кто, кого и сколько блокирует


Я буду этот тест делать опять. Соберу как можно больше информации.

Отпишусь.
21 апр 15, 10:07    [17542583]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
invm
Member

Откуда: Москва
Сообщений: 9827
Roust_m
Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.
На один ресурс может быть наложено одновременно множество совместимых блокировок разными процессами. По мере их снятия, блокирующий процесс для вашего будет меняться в выводе sp_who2.
Все блокирующие процессы сможете увидеть в sys.dm_os_waiting_tasks.
21 апр 15, 10:12    [17542606]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
invm
Roust_m
Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.
На один ресурс может быть наложено одновременно множество совместимых блокировок разными процессами. По мере их снятия, блокирующий процесс для вашего будет меняться в выводе sp_who2.
Все блокирующие процессы сможете увидеть в sys.dm_os_waiting_tasks.


Спасибо за информацию, тем не менее мой вопрос был о другом: нельзя ли это же самое сделать как-то иначе, чтобы избежать даунтайм? Я думал о том, чтобы создать пустые таблицы с той же структурой и партицировать их и потом залить в них данные и переименовать, но поскольку система 24/7, потом данные трудно будет собирать из разных таблиц. Похоже придется просить даунтайм, просто постараюсь его минимизировать.
21 апр 15, 10:21    [17542645]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Roust_m
Member

Откуда: Сидней
Сообщений: 1197
invm
Roust_m
Процесс висит и другой процесс, который его блокирует, все время меняется. Даже если этого не может быть.
На один ресурс может быть наложено одновременно множество совместимых блокировок разными процессами. По мере их снятия, блокирующий процесс для вашего будет меняться в выводе sp_who2.
Все блокирующие процессы сможете увидеть в sys.dm_os_waiting_tasks.


Я использую этот запрос, чтобы получить дерево блокировок:
select spid, blocked  from master..sysprocesses (nolock) 
where blocked = 0 and 
spid in (select blocked from master..sysprocesses (nolock) where blocked <>0)
union 
select spid, blocked  from master..sysprocesses (nolock) 
where blocked <> 0 
order by 2, 1


Кстати, оно получается огромное, на несколько сотен.
21 апр 15, 10:26    [17542668]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Roust_m
На самом первом шаге (удаление FK) процесс блокируется другими процессами и сидит, ничего не делая бесконечно, блокируя другие процессы.

У FK нет опции "online". Даунтайм получить трудно.
Удаление FK - это же операция с метаданными. Ей не нужна опция ONLINE, она выполняется мнгновенно, как я понимаю.

Нужно смотреть, что за блокировка, почему она возникает, какие команды выполняются в блокирующем процессе и т.д.
Может, там просто открытая месяц назад транзакция, в ничего не делающем коннекте?
21 апр 15, 11:21    [17542924]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8807
24/7 и нет "окон" обслуживания или резервного сервера? Забавно.
21 апр 15, 13:31    [17543660]     Ответить | Цитировать Сообщить модератору
 Re: Удаление FK "ONLINE"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31956
Владислав Колосов
24/7 и нет "окон" обслуживания или резервного сервера? Забавно.
ТС в стартовом топике написал, что есть окна обслуживания, а потом ещё повторил :-)
21 апр 15, 20:49    [17545923]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить