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

Откуда: Москва
Сообщений: 4804
Хочу послушать мнение людей знающих и опытных.


Есть таблица на 500 млн+ строк, 89 ГБ, которая наращивается ежедневно. (SQL 2014). Ожидается, что старые данные не меняются. Это наиболее нагруженная, наиболее часто используемая таблица в хранилище.

По таблицы идёт много сканов (прямолинейных SELECT без JOIN или с немногими JOIN на маленькие таблички). Чаще всего скан захватывает один месяц. Причем наиболее вероятно это последний (текущий) месяц. Первичный ключ у таблицы дата отрезанная до дня конвертированная в INT плюс ещё пара INT ключей.

Тот, что создавал эту таблицу партиционировать её по месяцам, а начиная с 2013 года назад по годам. Партиции лежат на одном диске, поэтому толку от этого мало.

Есть у меня идея изменить схему партиционирования и положить исторические данные (до 2014 года) на отдельную партицию, причем сделать её READONLY. А остальное в READ/WRITE партиций. На сервере на самом деле есть 4 разных физических диска. Но фактически они расположены на одном массиве. Правда 2 из них маленьких.

У кого есть какое мнение по поводу цело сообразности такого партиционирования? Или есть какие ещё идеи. Сервер SQL 2014 и можно задействовать последние фичи.
7 авг 14, 15:43    [16412460]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
mrGuest
Guest
a_voronin,

Можно сделать две таблицы XXX_Main и XXX_Archive, в XXX_Main хранить свежие данные, если чаще всего используются за последний месяц, то вот их и хранить. А все остальные сливать в XXX_Archive. На уровне запросов, в зависимости от нужного периода, брать данные или из XXX_Main или из обоих сразу. По фичи 2014 не знаю(
7 авг 14, 15:54    [16412533]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
партиции используют когда есть необходимость "администрировать" таблицу "по кускам". скажем, индексы перестраивать
при этом чем больше партиций тем удобнее админить то тем хуже кеврить таблицу
так что идея имеет определенный смысл
убирать ли годовое разбиение.. если файлгруппа одна - можно и убрать
но может как раз по файлгруппам разложить? чтобы обеспечить возможность ресторить старые года по очереди и "потом" в случае файолвера и поднятия с бакапа
7 авг 14, 15:55    [16412545]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Две таблицы это попытка своими руками сделать партиции. Вопрос больше про то, что READ ONLY партиция не должна использовать блокировки, так как данные гарантированно не могут измениться.
7 авг 14, 15:57    [16412553]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
a_voronin
Member

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


Главная задача ускорить и оптимизировать сканы по этой таблице. Бекапы и администрирование не являются критичными моментами.
7 авг 14, 16:02    [16412611]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
bergamot mimokrokodil
Guest
a_voronin
Crimean
партиции используют когда есть необходимость "администрировать" таблицу "по кускам". скажем, индексы перестраивать
при этом чем больше партиций тем удобнее админить то тем хуже кеврить таблицу
так что идея имеет определенный смысл
убирать ли годовое разбиение.. если файлгруппа одна - можно и убрать
но может как раз по файлгруппам разложить? чтобы обеспечить возможность ресторить старые года по очереди и "потом" в случае файолвера и поднятия с бакапа


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


Старые партиции в реад онли. Для активной создать новую файловую группу из 4 датафайлов одинакового размера' лежащих на разных из 4 винтах перелить партицию тудень. Оно будет использовать раунд Робин при выделении экстентов. При сканировании будет параллельно шеделиться на разные шпиндели.
7 авг 14, 16:32    [16412849]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
mimo krokodilll
Guest
+ читай про page compression, также про columnstore
7 авг 14, 16:40    [16412914]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
mimo krokodilll
+ читай про page compression, также про columnstore


Хорошо знаком и с первым и со вторым. page compression можно попробовать. columnstore бесполезен, так как нет агрегации а селектах
7 авг 14, 16:47    [16412992]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а "сквозных" индексов, без "выравнивания" - точно нет? а то они могут стать проблемой
а так - пробовать
хотя на объемах пробовать - то еще веселье, да..
7 авг 14, 16:55    [16413066]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Что такое ?
Crimean
"сквозных" индексов, без "выравнивания"
in English?

Буду пробовать на отдельной БД с 1-2% процентами данных
7 авг 14, 17:35    [16413384]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Все индексы должны быть секционированы по одинаковой схеме. Это называется "выравнивание".
7 авг 14, 17:43    [16413424]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
radya
Member

Откуда: Москва
Сообщений: 20
a_voronin,
Слить секции в одну конечно можно, но зачем ? Для увеличения быстродействия при чтении ? Вряд-ли , - секции на одном диске , ты ничего не выиграешь.
То-же самое про read only - вряд-ли это как то повлияет на время чтения .Ну только косвенно , и не факт что в лучшую сторону - автоматическое создание статистики будет отключено.

В качестве эксперимента - посмотри в сторону read committed snapshot ;)
7 авг 14, 17:46    [16413445]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Владислав Колосов
Все индексы должны быть секционированы по одинаковой схеме. Это называется "выравнивание".



Момент интересный, но у меня было представление, что индексы надо класть на отдельную файловую группу (партицию).

Вообще на таблице ПК из трёх полей, первое из которых дата. И есть ещё один индекс на один ключ.
7 авг 14, 17:51    [16413468]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Я был несколько неточен - выровненным считается индекс, созданный на основе схемы таблицы.


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

При объеме 500+млн я бы секционировал всю таблицу. Важный момент - при проверке фильтра тип данных должен точно соответствовать типу данных функции секционирования, например если функция принимает bigint, в мы пишем WHERE поле = int,
то будут просмотрены все секции. То же касается дат и прочего.
7 авг 14, 18:20    [16413590]     Ответить | Цитировать Сообщить модератору
 Re: Делать или не делать READONLY партицию?  [new]
o-o
Guest
a_voronin
Что такое ?
Crimean
"сквозных" индексов, без "выравнивания"
in English?

Non-Aligned Indexes
8 авг 14, 01:23    [16414938]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить