Есть база с парой больших таблиц (десятки миллионов записей).
В таблицах регистрируются данные с меткой времени.
В общем есть идея сегментировать таблицы, нарезав их скажем по кварталам.
В общем вопрос в том, стоит ли сигментировать некластерные индексы. Что это может дать?
Стоит ли сегментировать индексы, которые не сдержат поля, по которому идет сегментирование? Имеет ли вообще это какое либо значение.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний
Re: MS SQL 2005 Сегментация таблиц - некластериные индексы
Здравствуйте, tyomchick, Вы писали:
T>Доброго времени суток.
T>Есть база с парой больших таблиц (десятки миллионов записей). T>В таблицах регистрируются данные с меткой времени. T>В общем есть идея сегментировать таблицы, нарезав их скажем по кварталам. T>В общем вопрос в том, стоит ли сигментировать некластерные индексы. Что это может дать?
Если есть возможность использовать для разных секций разные диски, то даст или в процессе работы происходит "сравнение" данных разных секций.
Можно дропать секцию со старыми данными, но для этого все индексы должны быть секционированы. T>Стоит ли сегментировать индексы, которые не сдержат поля, по которому идет сегментирование? Имеет ли вообще это какое либо значение.
Насколько я помню нельзя секционировать индексы не содержащие поля по которым построена ф-я секционирования, что логично.
Re[2]: MS SQL 2005 Сегментация таблиц - некластериные индекс
Здравствуйте, sh1ng, Вы писали:
S>Здравствуйте, tyomchick, Вы писали:
T>>Доброго времени суток.
T>>Есть база с парой больших таблиц (десятки миллионов записей). T>>В таблицах регистрируются данные с меткой времени. T>>В общем есть идея сегментировать таблицы, нарезав их скажем по кварталам. T>>В общем вопрос в том, стоит ли сигментировать некластерные индексы. Что это может дать?
S>Если есть возможность использовать для разных секций разные диски, то даст или в процессе работы происходит "сравнение" данных разных секций.
Ну в общем это ясно, у меня как раз второй случай. Ради этого и делается.
S>Можно дропать секцию со старыми данными, но для этого все индексы должны быть секционированы.
А можно как то временно отключать секции? В смысле совсем, если она выделена в отдельную файловую группу. Что бы файлик на болванку записать, а в случае необхожимости назад вернуть? Знаю, что можно конвертнуть в отдельную таблицу, но как совсем отключить ... ?
T>>Стоит ли сегментировать индексы, которые не сдержат поля, по которому идет сегментирование? Имеет ли вообще это какое либо значение. S>Насколько я помню нельзя секционировать индексы не содержащие поля по которым построена ф-я секционирования, что логично.
Да я тоже так думал, но на деле вполне себе позволяет сегментировать. Не получилось только с ID-шным первычным ключем.
Базу не я разрабатывал. И назначения этих индексов я пока не уяснил. Но вот меня беспокоит, не скажется ли сегментации таких индексов отрицательно на проивзодительности? За вставку я не очень беспокоюсь, т.к. индексы не уникальные и чисто логически сегмент вычисляется до расчета индекса, просмотр других секций не требуется. А вот с выборкой по такому индексу не совсем понятно. Другое дело, что я пока не уверен в полезности этих индексов. Возможно они используются только для сортировки результатов выборки, и возможно на производительности их сегментация не скажется.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний
Re[3]: MS SQL 2005 Сегментация таблиц - некластериные индекс
T>Ну в общем это ясно, у меня как раз второй случай. Ради этого и делается.
Если позволяют ресурсы, то проще попробовать и сравнить результат.
T>А можно как то временно отключать секции? В смысле совсем, если она выделена в отдельную файловую группу. Что бы файлик на болванку записать, а в случае необхожимости назад вернуть? Знаю, что можно конвертнуть в отдельную таблицу, но как совсем отключить ... ?
То есть ты хочешь дропнуть файловую группу, а потом добавить ее же.
Не уверен что с добавление получится, но советую почитать документацию
S>>Насколько я помню нельзя секционировать индексы не содержащие поля по которым построена ф-я секционирования, что логично.
T>Да я тоже так думал, но на деле вполне себе позволяет сегментировать.
Глупость как можно секционировать индекс, если он не содержит полей по которым произведено секционирование. Что то ты путаешся.
Не получилось только с ID-шным первычным ключем. T>Базу не я разрабатывал. И назначения этих индексов я пока не уяснил. Но вот меня беспокоит, не скажется ли сегментации таких индексов отрицательно на проивзодительности? За вставку я не очень беспокоюсь, т.к. индексы не уникальные и чисто логически сегмент вычисляется до расчета индекса, просмотр других секций не требуется. А вот с выборкой по такому индексу не совсем понятно. Другое дело, что я пока не уверен в полезности этих индексов. Возможно они используются только для сортировки результатов выборки, и возможно на производительности их сегментация не скажется.
Если у тебя идет сравнение данных из разных секций, то пробуй.
А вообще по своему опыту скажу, что если нет разных носителей, то и нет особого смысла в секционирование для OLTP
Re[4]: MS SQL 2005 Сегментация таблиц - некластериные индекс
Здравствуйте, sh1ng, Вы писали:
T>>Ну в общем это ясно, у меня как раз второй случай. Ради этого и делается. S>Если позволяют ресурсы, то проще попробовать и сравнить результат.
T>>А можно как то временно отключать секции? В смысле совсем, если она выделена в отдельную файловую группу. Что бы файлик на болванку записать, а в случае необхожимости назад вернуть? Знаю, что можно конвертнуть в отдельную таблицу, но как совсем отключить ... ? S>То есть ты хочешь дропнуть файловую группу, а потом добавить ее же. S>Не уверен что с добавление получится, но советую почитать документацию
В общем то можно конвертнуть в отдельную таблицу, но это при условии, что все тиндексы сегментированы, с чем собственно проблема.
S>>>Насколько я помню нельзя секционировать индексы не содержащие поля по которым построена ф-я секционирования, что логично. T>>Да я тоже так думал, но на деле вполне себе позволяет сегментировать. S>Глупость как можно секционировать индекс, если он не содержит полей по которым произведено секционирование. Что то ты путаешся.
Да нет, как оказалось все таки можно при условии, что индекс не уникальный. Это вполне объяснимо. По видимому сегментирование в этом случае означает лиш то, что у кажого сегмента таблицы будет свой независимый индекс. Смысла в этом я вижу мало, т.к. это вроде как не гарантирует уменьшение размерности каждого индекса. Видимо такая возможность оставлена для того, что бы можно было удалять сегменты.
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний