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

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

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


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