powered by simpleCommunicator - 2.0.19     © 2024 Programmizd 02
Map
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Построение индекса для каждой секции таблицы по отдельности
9 сообщений из 9, страница 1 из 1
Построение индекса для каждой секции таблицы по отдельности
    #33585204
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, недавно передо мной встала задача.

Есть немаленькая БД под MS SQL Server 2005. Самая тяжёлая таблица в ней может "весить" порядка 10 Тб. Разумеется, она секционирована, например, на 100 кусков примерно по 100 Гб, и проиндексирована.

Как показывает практика, в какой-то момент индекс "слетает". Полностью перестраивать его днём, когда всё жутко загружено - некогда.

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

Как вариант: "быстренько" построить индекс для последних 10'000'000 записей, потом - для предыдущих 10'000'000, и т.д.

Вопрос: MS SQL Server 2005 такое может? Если да, то как? Может быть, кто-нибудь такое реализовывал? Может, есть ссылка на MSDN?

P.S. Поиском я пользовался. Нашёл статью:
SQL Server 2005. Partitioned Tables and Indexes
Прочитал. Прямого ответа в ней не нашёл.

P.P.S. Знаю, что Oracle 10g такое умеет. Более, того, на нём такое уже реализовано. Теперь надо реализовать на MS SQL Server 2005.

P.P.P.S. Индексирование - по довольно длинным строковым полям. Т.е. процесс это небыстрый, а индекс действительно нужен.
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33585219
.....
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда-то я спрашивал, может ли SQL2005 работать с индексами секций независимо (в частности, меня интересовал вопрос об установке разных FillFactor на разных секциях) - мне сказали, что для него все секции все равно один целый объект, поэтому весьма навряд ли...
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33585732
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenГоспода, недавно передо мной встала задача.

Есть немаленькая БД под MS SQL Server 2005. Самая тяжёлая таблица в ней может "весить" порядка 10 Тб. Разумеется, она секционирована, например, на 100 кусков примерно по 100 Гб, и проиндексирована.

Как показывает практика, в какой-то момент индекс "слетает". Полностью перестраивать его днём, когда всё жутко загружено - некогда.

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

Как вариант: "быстренько" построить индекс для последних 10'000'000 записей, потом - для предыдущих 10'000'000, и т.д.

Вопрос: MS SQL Server 2005 такое может? Если да, то как? Может быть, кто-нибудь такое реализовывал? Может, есть ссылка на MSDN?

P.S. Поиском я пользовался. Нашёл статью:
SQL Server 2005. Partitioned Tables and Indexes
Прочитал. Прямого ответа в ней не нашёл.

P.P.S. Знаю, что Oracle 10g такое умеет. Более, того, на нём такое уже реализовано. Теперь надо реализовать на MS SQL Server 2005.

P.P.P.S. Индексирование - по довольно длинным строковым полям. Т.е. процесс это небыстрый, а индекс действительно нужен.

Гм... в чем выражается "слетание индекса"? Мож птичий грипп?
1) DBCC CHECKTABLE/CHECKDB нецензурно выражается или 2) просто индекс перестает использоваться в запросах оптимизатором?
Ежели 2), то следует просто обновить статистику.
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33585902
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
ALTER INDEX index_name
ON table_name
PARTITION = part_num  WITH (MAXDOP= 1 )

- ребилдинг отвалившейся партиции индекса. MAXDOP - число процессоров для операции (чтоб не все задействовать. Если можно все, то 0)
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33586056
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks2
Гм... в чем выражается "слетание индекса"? Мож птичий грипп?
1) DBCC CHECKTABLE/CHECKDB нецензурно выражается или 2) просто индекс перестает использоваться в запросах оптимизатором?
Ежели 2), то следует просто обновить статистику.

Сам я не видел, но, по словам парней из поддержки, бывает и (1), и (2). Вашу рекомендацию учту!

saint
Код: plaintext
1.
2.
3.
ALTER INDEX index_name
ON table_name
PARTITION = part_num  WITH (MAXDOP= 1 )

- ребилдинг отвалившейся партиции индекса. MAXDOP - число процессоров для операции (чтоб не все задействовать. Если можно все, то 0)

О! То, что надо! Большущее вам спасибо за помощь! Понял, в каком направлении искать, и вот что нашёл:

ALTER INDEX вообще

Как сделать "выравнивание" партиций индекса по партициям таблицы

Ресурсоёмкость операций по восстановлению
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33586156
saint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блин, надеюсь вы меня поняли. REBUILD забыл
конечно же
Код: plaintext
1.
2.
3.
4.
ALTER INDEX index_name
ON table_name
REBUILD
PARTITION = part_num  WITH (MAXDOP= 1 )
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #33587597
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, я так и понял :) . Просто я почему-то думал, что из SQL такого сделать нельзя (каюсь, чайник я в MS SQL Server... ну или почти чайник). А как увидел, что можно - мигом нашёл в MSDN.
...
Рейтинг: 0 / 0
Построение индекса для каждой секции таблицы по отдельности
    #34008198
Фотография Гликоген
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня аналогичная проблема. Правда, как ребилдить партицию индекса, я нашел сразу в BOL.
Остается неясным, как сделать DISABLE партиции индекса, а не всего индекса.

Это нужно для массовой загрузки.
Сценарий такой:
1. Дизаблю партицию индекса
2. Загружаю данные
3. Ребилдю партицию индекса.

Так как же сделать №1 ?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Построение индекса для каждой секции таблицы по отдельности
    #36048919
Artur Bondarenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ГликогенУ меня аналогичная проблема. Правда, как ребилдить партицию индекса, я нашел сразу в BOL.
Остается неясным, как сделать DISABLE партиции индекса, а не всего индекса.

Это нужно для массовой загрузки.
Сценарий такой:
1. Дизаблю партицию индекса
2. Загружаю данные
3. Ребилдю партицию индекса.

Так как же сделать №1 ?

+1 Может быть, проблема решена в MS SQL 2008?
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Построение индекса для каждой секции таблицы по отдельности
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]