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

Откуда:
Сообщений: 25
Добрый день.

Есть огромная таблица, которая секционирована и ее секции лежат в разных файловых группах.

Секционирована она по годам.

Надо как-то удалить старые файлы, соответствующие наиболее старым файловым группам.




Подскажите пожалуйста как это правильно сделать?
26 ноя 18, 13:33    [21744902]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
обычный DELETE будет выполняться бесконечно долго.
26 ноя 18, 13:34    [21744903]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
Подозраваю что файловые группы можно как-то по-другому удалить.
26 ноя 18, 13:35    [21744905]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
Секции можно транкейтить. На более новых версия сразу, на более старых -- через свитч в таблицу.
26 ноя 18, 13:37    [21744909]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Если есть SQL Server 2016 то там можно делать TRUNCATE выбранных секций. Если версия ниже то переключаете секцию на пустую таблицу с идентичной структурой столбцов и после удаляете эту таблицу.
26 ноя 18, 13:37    [21744910]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
Гавриленко Сергей Алексеевич
Секции можно транкейтить. На более новых версия сразу, на более старых -- через свитч в таблицу.



Microsoft SQL Server 2008 R2 (SP3) Enterprise Edition





Сергей, если не сложно, можете ссылочку дать как это делать?


Я пока тоже поищу....
26 ноя 18, 13:39    [21744916]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
AlanDenton
Если есть SQL Server 2016 то там можно делать TRUNCATE выбранных секций. Если версия ниже то переключаете секцию на пустую таблицу с идентичной структурой столбцов и после удаляете эту таблицу.



Да, версия ниже.


Буду очень благодарен за пример.
26 ноя 18, 13:40    [21744918]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
ДваждыДва
Буду очень благодарен за пример.

https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/24 - cycle switching - db.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/25 - cycle switching - test.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/26 - truncate partition.sql
26 ноя 18, 13:56    [21744944]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
AlanDenton
ДваждыДва
Буду очень благодарен за пример.

https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/24 - cycle switching - db.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/25 - cycle switching - test.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/26 - truncate partition.sql


Ого... Спасибо!
26 ноя 18, 14:00    [21744954]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
AlanDenton
ДваждыДва
Буду очень благодарен за пример.

https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/24 - cycle switching - db.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/25 - cycle switching - test.sql
https://github.com/sergeysyrovatchenko/SQLSaturday/blob/master/DatabaseSizeTips/26 - truncate partition.sql



А сработает ли это в 2008-м?


TRUNCATE TABLE dbo.WordMention WITH (PARTITIONS (1))
26 ноя 18, 14:02    [21744958]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
ДваждыДва
TRUNCATE TABLE dbo.WordMention WITH (PARTITIONS (1))

Нет, только начиная с 2016. Примеры по ссылкам что выше скидывал. Смысл тот же просто больше кода
26 ноя 18, 14:04    [21744962]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
AlanDenton
ДваждыДва
TRUNCATE TABLE dbo.WordMention WITH (PARTITIONS (1))

Нет, только начиная с 2016. Примеры по ссылкам что выше скидывал. Смысл тот же просто больше кода



Спасибо.

Разбираюсь.






А подскажите, откуда тут при переключении цифра 2 взялась? (обвел её).


Никак не могу понять

К сообщению приложен файл. Размер - 78Kb
26 ноя 18, 14:50    [21745039]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
Konst_One
Member

Откуда:
Сообщений: 11517
col1 int
, очевидно в примере партиция для значения 2
26 ноя 18, 14:58    [21745050]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31331
Konst_One
col1 int

, очевидно в примере партиция для значения 2
Нет, секции указывают по порядковому номеру.

ДваждыДва
А подскажите, откуда тут при переключении цифра 2 взялась? (обвел её).
Очевидно в примере очищают (переключают) секцию номер два.
26 ноя 18, 18:38    [21745304]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
alexeyvg
Konst_One
col1 int

, очевидно в примере партиция для значения 2
Нет, секции указывают по порядковому номеру.

ДваждыДва
А подскажите, откуда тут при переключении цифра 2 взялась? (обвел её).
Очевидно в примере очищают (переключают) секцию номер два.



Спасибо.
26 ноя 18, 19:15    [21745342]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
Что-то не получается секцию переключить на другую таблицу:


ALTER TABLE t1 SWITCH PARTITION 2 TO t2


ALTER TABLE SWITCH statement failed. Source and target partitions have different values for the DATA_COMPRESSION option.
26 ноя 18, 19:16    [21745347]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36905
Ну так надо компрессию такую же для таблицы t2 было делать, как и для секции.
26 ноя 18, 20:29    [21745414]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
Гавриленко Сергей Алексеевич
Ну так надо компрессию такую же для таблицы t2 было делать, как и для секции.



Сделал, заработало, спасибо :)
27 ноя 18, 10:34    [21745778]     Ответить | Цитировать Сообщить модератору
 Re: Удалить сексции секционированной таблицы.  [new]
ДваждыДва
Member

Откуда:
Сообщений: 25
Еще такой вопрос есть.

На таблицу ссылаются FK (ON DELETE ON UPDATE CASCADE) другие таблицы.

Если секцию переключить и сделать TRUNCATE новой таблицы, из зависимых таблиц удаляться данные?
27 ноя 18, 10:36    [21745779]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить