Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разрастание индексов / 8 сообщений из 8, страница 1 из 1
24.04.2001, 10:06
    #32004708
Sergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
MS SQL 7.0.Есть таблица в которую круглосуточно происходит добавление и удаление записей (анализатор офисной АТС). Постоянное количество записей 1000000-1500000.Есть один кластерный и один некластерный индекс. Проблема- после нескольких месяцев работы размеры каждого из индексов в полтора-два раза превышают размер данных (при удалении записей размер индекса практически не уменьшается).Как с этим бороться без принудительной переиндексации таблицы?
...
Рейтинг: 0 / 0
24.04.2001, 10:27
    #32004711
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
Судя по всему, Вас смущает размер некластерного индекса, поскольку кластерный индекс содержит сами данные. Может быть, удастся сделать кластерный индекс покрывающим и те поля, которые используются в не кластерном индексе.
С другой стороны, постоянное добавление и удаление записей неизбежно приведёт к сильной фрагментации страниц таблицы. Бороться с этим можно только переиндексацией. Я надеюсь, что у Вашей АТС есть такое время суток, когда акивность звонков не велика и можно запланировать переиндексацию на это время.
Ещё один вариант, это натравить на Вашу таблицу ITW, и посмотреть, что он порекомендует под реальной нагрузкой.
...
Рейтинг: 0 / 0
24.04.2001, 11:29
    #32004716
Sergey
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
Извиняюсь, да именно некластерных индексов. А вот простоев у АТС практически не бывает, круглосуточная работа, поэтому переиндексация является крайне нежелательным действием (хотя именно так сейчас и приходится поступать). А интересно, в 2000 SQL эта проблема как-нибудь решена? Хотя, насколько я помню, Microsoft обещал решить эту проблему в версии следующей после MS SQL Server 6.5
...
Рейтинг: 0 / 0
24.04.2001, 12:04
    #32004721
Garya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
Тяжелый случай. Я на твоем месте сделал бы так:
1. Сделал бы копию БД
2. Настроил бы Merge-репликацию между БД-оригиналом и БД-копией.
2. В копии пересоздал бы заново индекс, задав высокое значение FillFactor (процентов 95).
3. Запустил бы репликацию, чтобы синхронизировать содержимое БД, которое могло расползтись, пока выполнялись операции с индексом.
4. Подсунул бы БД-копию вместо оригинала, предварительно уничтожив настройки репликации.
...
Рейтинг: 0 / 0
24.04.2001, 12:27
    #32004726
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
А разве DBCC DBREINDEX не реает эту задачу?

Garya: Этот метод предполагает отключение пользователей хотя-бы на небольшое время...
Лучьше уж пересоздать индексы на рабочей базе.
...
Рейтинг: 0 / 0
24.04.2001, 13:03
    #32004731
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
Одни мои знакомые, занимающиеся биллингом, решили эту проблему созданием новой таблицы на каждый день. Не красиво - но даёт результат.
...
Рейтинг: 0 / 0
24.04.2001, 13:49
    #32004735
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
Можно еще держать 2 таблицы: в первую заносяться оперативные данные и она может не содержать индексов, а во вторую таблицу данные периодически переносятся из первой, причем после переноса они там(в 1-ой таблице) стираются, это можно делать в одной транзакции. На время переиндексации данные какое-то время будут просто копиться в первой таблице.

А может и черт с ним - пусть себе растет индекс?
...
Рейтинг: 0 / 0
24.04.2001, 13:58
    #32004738
Александр Гладченко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разрастание индексов
RE: SergSuper
Мне показалось, что Sergey именно переиндекспции (для борьбы с фрагментацией) и не хотел. Если я правильно понял, данные удаляются за прошедшие периобы, т.е. хранится только определённый интервал времени (допустим неделю). Тогда, можно завести 7 таблиц, по дням недели, которые будут дропаться в нужное время - и никакой переиндексации....
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разрастание индексов / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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