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

Откуда:
Сообщений: 381
сервер 2008

таблицы растут быстро индексировать их все труднее и труднее. хочу разбить на партишн их.

все данные поступают в несколько порций в течении дня но все они относятся к одному дню.
сейчас в день закачивается 3 мил записей. через пару месяцев это может вырасти до 30.

как сделать партишны что бы в одной были только последние 3 дня в другой следующие 27 и в третьей - остальное.

или

разбивать на партишны по одному дню. но партишны с последними 3 днями держать в одной файл группе, 27 партишн следующих в другой файлгруппе и тд

что легче - переносить данные из партишн в партишн или переносить партишн из файлгруппы в файлгруппу?
21 май 11, 22:20    [10689498]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
>что легче - переносить данные из партишн в партишн или переносить партишн из файлгруппы в файлгруппу?

В топку оба варианта...


Попросту, создайте еженедельные партиции, или же ежедневные, благо SQL Server 2008 уже поддерживает 15 000 секций, поле секционирования - дата [внесения записи].
Желательно также, если будет кластерный индекс, чтобы поле по которому он создан было нарастающим, тогда фрагментация этого индекса (а значит и таблицы) изначально будет минимальна.


Как только заполнение секции завершено - переводите ее в Read_only и единожды делайте бэкап файловой группы в которой секция создана.

Ну и конечно же, регулярно надо выполнять бэкап Read_Write_Filegroups.

Этот сценарий применим для Simple модели восстановления.

По теме: Performing Piecemeal Restores
21 май 11, 23:18    [10689624]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр Волок (def1983)
SQL Server 2008 SP2 уже поддерживает 15 000 секций
Блин.
22 май 11, 02:07    [10689908]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Полуэкт
Member

Откуда:
Сообщений: 381
спасибо Mr Wolf I shall pay my attention in full to what you just suggested :)
22 май 11, 03:54    [10689943]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Полуэкт
Member

Откуда:
Сообщений: 381
поскольку таблицы уже существуют то скорее всего я разобью в первый день на 2 части - все старое и сегодня. а потом буду добавлять секции для каждого последующего дня.

те ты считаешь что с разными файлгруппами морочиться нет смысла так?

п.с. кластерный индекс конечно есть и он последовательный те все данные ложатся физически одной пачкой для одного дня
22 май 11, 14:33    [10690474]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Полуэкт
поскольку таблицы уже существуют то скорее всего я разобью в первый день на 2 части - все старое и сегодня. а потом буду добавлять секции для каждого последующего дня.


Да, почему бы и нет.

Но я рекомендовал бы использовать "секция - на каждый новый день" только в случаях когда грузится очень большой объем данных.
Прогнозированные 30 млн в день - это конечно достаточно веский объем, но только в случае если строки довольно увесистые.

Причина - большое количество мелких секций - это дополнительный оверхед оптимизатору.
Поэтому, возможно есть смысл пробовать недельные секции изначально (или даже месячные) с последующим переходом на более низкий порог.

Полуэкт
те ты считаешь что с разными файлгруппами морочиться нет смысла так?

Как раз есть, ведь базу нужно будет архивировать.. удобней это будет делать частями.. а для этого файловые группы и нужны..
22 май 11, 21:48    [10691153]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
О каком кол-ве записей идет речь?
22 май 11, 21:53    [10691172]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Полуэкт
Member

Откуда:
Сообщений: 381
Александр Волок
Причина - большое количество мелких секций - это дополнительный оверхед оптимизатору.

Полуэкт
те ты считаешь что с разными файлгруппами морочиться нет смысла так?

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

если все запросы работают с данными только одного дня - почему оверхед?

про файловые группы - ты хочешь сказать что нужно обязательно ложить каждую секцию в отдельную файл группу?

у нас так не получится по организационным соображениям. я могу запросить сделать 2 или 3 группы один раз и все (типа засунуть весь 2010 в одну а 2011 и все новые поступления во вторую). бэкап и пр меня не касается этим дба занимаются.
22 май 11, 21:56    [10691180]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Полуэкт
про файловые группы - ты хочешь сказать что нужно обязательно ложить каждую секцию в отдельную файл группу?


По большому счету, без этого партицирование бессмыслено.
22 май 11, 21:59    [10691192]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Павел уже ответил то, к чему и я веду...

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

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

А переливка данных из одной секции в другую с целью уменьшить время обслуживания актуальной - это бесполезный и тяжелый для сервера процес.. переносить же секцию из одной ФГ в другую вовсе не получится..
22 май 11, 22:14    [10691250]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Полуэкт
у нас так не получится по организационным соображениям. я могу запросить сделать 2 или 3 группы один раз и все (типа засунуть весь 2010 в одну а 2011 и все новые поступления во вторую). бэкап и пр меня не касается этим дба занимаются.


Ну дак ДБА у вас не волшебники. Упрутся с такими раскладами через несколько лет в базу размером с 10 террабайт с несколькими файловыми группами, и сядут на попу, когда столкнутся с задачами бэкапа/рестора

Сообщение было отредактировано: 22 май 11, 22:25
22 май 11, 22:21    [10691272]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Полуэкт
Member

Откуда:
Сообщений: 381
давайте упростим задачу.

вы господа гуру можете мне сказать - если предположим я разбил на дневные секции и положил их всех в одну файловую группу. и делаю select * from vwChild1 where date = @yesterday (где вью это парент джойн чайлд1 по кластеред ид) вере дата = вчера.

вопрос - есть ли разница между таким запросом и запросом по точно такой же несекционированной таблице где данных только на один день всего = вчера ?

более общий вопрос если есть желание обсудить - а в чем собственно функция файлгруппы если все они будут лежать на одном дисковом канале (SAN LUN#)
23 май 11, 12:40    [10693627]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
Александр Волок (def1983)
А переливка данных из одной секции в другую с целью уменьшить время обслуживания актуальной - это бесполезный и тяжелый для сервера процес.. переносить же секцию из одной ФГ в другую вовсе не получится..


если соседняя секция находится в целевой фг, то получится. сначала мерж, потом сплит
23 май 11, 13:01    [10693820]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Полуэкт
если предположим я разбил на дневные секции и положил их всех в одну файловую группу. и делаю select * from vwChild1 where date = @yesterday (где вью это парент джойн чайлд1 по кластеред ид) вере дата = вчера.

вопрос - есть ли разница между таким запросом и запросом по точно такой же несекционированной таблице где данных только на один день всего = вчера ?


Нет разницы быть не должно, SQL Server должен выполнить один и тот же объем работы.
Проверяется с помощью

SET STATISTICS IO ON
SET STATISTICS TIME ON


Полуэкт
более общий вопрос если есть желание обсудить - а в чем собственно функция файлгруппы если все они будут лежать на одном дисковом канале (SAN LUN#)

1) Manageability - бэкапы файлгрупп, проверки checkdb отдельных групп, реиндексация, настройки компрессии - это все присутсвует независимо от расклада дисковой системы.

2) Performance - SQL Server 2008 b
24 май 11, 22:04    [10703003]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Полуэкт
если предположим я разбил на дневные секции и положил их всех в одну файловую группу. и делаю select * from vwChild1 where date = @yesterday (где вью это парент джойн чайлд1 по кластеред ид) вере дата = вчера.

вопрос - есть ли разница между таким запросом и запросом по точно такой же несекционированной таблице где данных только на один день всего = вчера ?


Нет разницы быть не должно, SQL Server должен выполнить один и тот же объем работы.
Проверяется с помощью

SET STATISTICS IO ON
SET STATISTICS TIME ON


Полуэкт
более общий вопрос если есть желание обсудить - а в чем собственно функция файлгруппы если все они будут лежать на одном дисковом канале (SAN LUN#)

1) Manageability - бэкапы файлгрупп, проверки checkdb отдельных групп, реиндексация, настройки компрессии - это все присутсвует независимо от расклада дисковой системы.

2) Performance - SQL Server 2008 имеет достаточно усовершенстований в data engine, позволяющих считывать секции паралельно, даже если имеется однолуновый сан.

http://sqlblog.com/blogs/erin_welker/archive/2008/02/10/partitioning-enhancements-in-sql-server-2008.aspx
24 май 11, 22:08    [10703019]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Shakill
Александр Волок (def1983)
А переливка данных из одной секции в другую с целью уменьшить время обслуживания актуальной - это бесполезный и тяжелый для сервера процес.. переносить же секцию из одной ФГ в другую вовсе не получится..


если соседняя секция находится в целевой фг, то получится. сначала мерж, потом сплит

Да, Вы правы.

Как и в первом случае - это по прежнему ресурсоемкая операция...
24 май 11, 22:10    [10703021]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Александр Волок (def1983)
Member

Откуда: Rotterdam
Сообщений: 4959
Ссылка по теме из многоуважемого мною издания:
SQLMag: Using Table Partitions to Archive Old Data in OLTP Environments
25 май 11, 00:05    [10703305]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно спланировать архивирование через партишионинг  [new]
Полуэкт
Member

Откуда:
Сообщений: 381
nice! thank you
25 май 11, 16:26    [10707981]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить