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

Откуда:
Сообщений: 165
Привет!

Есть задача: объединить ~150 баз данных в одну. в итоге в самой большой таблице получится ~60 млн. строк. И каждый день количество будет увеличиваться на ~8 тысяч строк.

Вопрос: что лучше будет с точки зрения создания, администрирования - секционированная таблица на разных HDD или же секционированное представление?

Сразу оговорюсь - я новичок, и лично мне по душе второй вариант. Т.к. (как мне кажется) в первом случае будет сложней администрировать в дальнейшем.

Может быть можно выделить плюсы и минусы каждого подхода?
Буду весьма благодарен за ответы. После рытья BOL и интернетов не могу определиться...

Спасибо!

P.S. MS SQL 2008 R2
11 июл 13, 20:43    [14554840]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
Буду весьма благодарен за ответы.


Одна таблица.
11 июл 13, 21:02    [14554886]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
Поясните пожалуйста почему?
Проект еще на стадии проектирования - и неизвестно как будут расположены файлы базы данных и на каких HDD.

Спасибо.
11 июл 13, 21:05    [14554894]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
whitebeast,

автор
Проект еще на стадии проектирования


Путь он там и остается.

Поясняю. У Вас маленькая табличка. Таблички не размешается в файлах. Файлы не размешаются на "каких-то HDD". Вобщем, 1 сентября уже скоро...
11 июл 13, 21:18    [14554927]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
отличный ответ... т.е. данные хранятся хрен-пойми где.
после 1-го сентября настроение Великого улучшится и он удосужится ответить нормально?
11 июл 13, 21:25    [14554958]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
И раз уж перешли на цитаты...
pkarklin
Таблички не размешается в файлах

А где они тогда размешиваются? В блендере?

pkarklin
Файлы не размешаются на "каких-то HDD". Вобщем, 1 сентября уже скоро...

да... русский поучить кому-то определенно стоит.

На этом прошу прекращать херню и хотя бы попытаться отвечать по теме.

Спасибо.
11 июл 13, 21:27    [14554968]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
whitebeast
отличный ответ... т.е. данные хранятся хрен-пойми где.
после 1-го сентября настроение Великого улучшится и он удосужится ответить нормально?


Намек на 1 сентября (сесть за парту) видимо был не понят.

Специально для нечитателей повторяю:

whitebeast
что лучше будет с точки зрения создания, администрирования


pkarklin
Одна таблица.


Какие еще вопросы будут?
11 июл 13, 21:29    [14554976]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
А намек не грубить и пояснить свой совет Вам ничего не сказал?

Чем хуже секционированное представление? Почему секционированная таблица лучше? Я пытаюсь понять, чтобы в будущем знать точно и не тратить нервы на умников с форума.
11 июл 13, 21:33    [14554983]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
whitebeast,

автор
А где они тогда размешиваются? В блендере?


Возможно понять это позволит Вам чтение документации в части Files and Filegroups Architecture, ибо объекты MS SQL напрямую в файлах не размещаются.
11 июл 13, 21:36    [14554993]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
whitebeast
Чем хуже секционированное представление? Почему секционированная таблица лучше?


Хуже, чем что? Лучше, чем что?

whitebeast
Я пытаюсь понять, чтобы в будущем знать точно и не тратить нервы на умников с форума.


Не тратьте время на умников с форума. Читайте документацию, пробуйте, экспериментируйте. Только не со сферической табличкой в вакууме...
11 июл 13, 21:39    [14555002]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
мимо
Guest
whitebeast
Чем хуже секционированное представление? Почему секционированная таблица лучше? Я пытаюсь понять, чтобы в будущем знать точно и не тратить нервы на умников с форума.

Представление - оно и есть представление, т.е. создается на основание таблиц, кода. Используются иные механизмы. Т.е. утрированно: секционированное на таблицу - это хард, а на вью - софт. Тут в примечание рекомендации мйкрософта.
ЗЫ. А насчет хранения - всё правильно понимаете. Всё в файлах хранится. И даже на диске.
12 июл 13, 09:20    [14555472]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
Спасибо! Буду курить в сторону секционированных таблиц.
12 июл 13, 10:43    [14556083]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
whitebeast
в самой большой таблице получится ~60 млн. строк.

Это мелочи.

whitebeast
И каждый день количество будет увеличиваться на ~8 тысяч строк.

Три миллиона строк в год. Тоже мелочи.

whitebeast
Вопрос: что лучше будет с точки зрения создания, администрирования - секционированная таблица на разных HDD или же секционированное представление?

Вариант "одна несекционированная таблица" даже не рассматривается?
Сколько секций предполагаете сделать в этой таблице/представлении? По какому полю хотите секционировать? Предполагается ли переписывать запросы для использования секционирования?
12 июл 13, 11:57    [14556825]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
Думаю разбить на 10 секций максимум, если вообще не на 5. Потому что в самой большой базе в самой большой таблице хранится 6 млн. строк.
Секционировать буду по двум полям: Id (автоинкрементное в базе исходнике) и CustomerName (текстовое поле). Если я правильно все понял - эти два поля должны быть в кластерном индексе.
По запросам на данный момент информации нет вообще :( Какие они будут - неизвестно...
Какую опцию секционирования выбрать LEFT RANGE или RIGHT RANGE? Если в будущем возможны добавления новых CustomerName, то на первое время должно хватить крайней секции и последующим перестроением секций - я прав?

А насчет одной таблицы - лично у меня еще не было опыта работы с такими объемами. Поэтому сразу глянул на секционирование.
Теоретически, как сильно будет тормозить база при вставке?
12 июл 13, 12:14    [14556968]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
whitebeast
Секционировать буду по двум полям

Как таблицу, так и представление можно секционировать только по одному столбцу.

Чтобы запросы, обращающиеся к секционированным объектам, работали хорошо, в них крайне желательно ограничивать секции, вот так:
select ...
from СекционированнаяТаблица
where ПолеСекционирования = ...
или так:
select ...
from СекционированнаяТаблица
where ПолеСекционирования between ... and ...

Если такого ограничения не будет, то запросы могут замедлиться по сравнению с вариантом "одна нескеционированная таблица".

whitebeast
Теоретически, как сильно будет тормозить база при вставке?

Какой средний размер записи в самой большой таблице, которая на 60 млн. записей?
Пусть, например, 200 байт. Получается 12 Гб на сами данные. Плюс, пускай, 10 Гб на индексы. Суммарный размер таблицы 20-25 Гб. Такую таблицу легко можно построить на любой персоналке и протестировать в хвост и в гриву.
12 июл 13, 12:36    [14557155]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
Ага... Т.е. в моем случае секционировать по полю CustomerName.
Допустим будет такой запрос:
select ...
from СекционированнаяТаблица
where ПолеСекционирования = XXX and ДругоеПоле = YYY 


в этом случае оптимизатор как сработает? Будет ли использовано секционирование?

Спасибо за терпение и пояснения!
12 июл 13, 12:44    [14557227]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
И что если допустим, сначала создать обычную таблицу без секций, настроить хорошо индексы, поработать пару лет и, при появлении проблем с производительностью, перестроить кластерный индекс с учетом секционирования?
12 июл 13, 12:48    [14557264]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
whitebeast
select ...
from СекционированнаяТаблица
where ПолеСекционирования = XXX and ДругоеПоле = YYY 

в этом случае оптимизатор как сработает? Будет ли использовано секционирование?

Оптимизатор вычислит номер секции, в которой содержится значение XXX.
При желании можно самому получить этот номер:
select $partition.ИмяФункцииСекционирования(XXX)

Дальше SQL Server будет работать только с этой секцией. Например, если по ДругоеПоле создан индекс, то будет одна операция Index Seek.

Если же написать запрос без поля секционирования:
select ...
from СекционированнаяТаблица
where ДругоеПоле = YYY 

то будет столько операций Index Seek, сколько секций содержится в таблице.
12 июл 13, 12:55    [14557336]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
whitebeast
И что если допустим, сначала создать обычную таблицу без секций, настроить хорошо индексы, поработать пару лет и, при появлении проблем с производительностью, перестроить кластерный индекс с учетом секционирования?

Возможен и такой вариант.
12 июл 13, 12:58    [14557366]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
whitebeast
Member

Откуда:
Сообщений: 165
В общем потестирую ка я немного все варианты...
Спасибо всем за участие!
12 июл 13, 13:20    [14557565]     Ответить | Цитировать Сообщить модератору
 Re: Секционированная таблица или секционированное представление?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
whitebeast
И что если допустим, сначала создать обычную таблицу без секций, настроить хорошо индексы, поработать пару лет и, при появлении проблем с производительностью, перестроить кластерный индекс с учетом секционирования?
Секционирование, в большинстве случаев, не решает проблем производительности.
13 июл 13, 03:24    [14561509]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить