Informix Logo


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

> Ситуация: есть логируемая база с весьма сложной структурой и огромным
> объемом транзакций, в ней есть ведущая таблица связанная с массой других и
> триггерами delete cascade. Через месяц данные становятся ненужны и подлежат
> удалению. Естесссно после делита логи трудятся вовсю! ;-) Но после удаления
> места в базе не прибывает! Недавно удалил 90% записей, а всеравно приходит
> сообщение, что 91% объема занят. В настоящее время база имеет уже 6 чанков и
> требует еще места! Можно конечно сделать экспорт/импорт, но это не выход...
> Объясните мне глупому, куда место девается? Если в логируемой базе записи
> удаляются только логически, то как бы их снести начисто? Перевод базы в
> нелогируемый режим и удаление неполучился, т.к. в этот момент сервер меняет
> триггеры и на удаление получаешь отлуп, т.к. есть ссылки на другие таблицы.
> Сервер WG 7.30TC2 на NT 4 SP5.

При удалении записей Informix не производит "уплотнение" записей
(перемещение используемых страниц на освободившееся место и удаление
очищенных от страниц с данными экстентов из tablespace), а использует
освободившиеся странички tablespacе только при вставке новых записей
(естественно при вставке именно в эту же таблицу). То есть так просто при
удалении записей место он тебе не отдаст.

Подробнее можно прочитать в
Performance Guide.
Table and Index Performance Consideration.
Improving Performance for Nonfragmented Tables and Table Fragments.
Managing Extents.
Reclaiming Unused Space Within an Extent.

Убрать возникшую фрагментацию и вернуть неиспользованное пространство можно
следующим образом:
ALTER INDEX TO CLUSTER и обратно (либо дропнуть их и создать заново) -
перелопатит место которое занимают индексы.
ALTER FRAGMENT ON table <tablename> INIT IN <dbspacename> обработает
экстенты с данными.

Да, и не забудь про update statistics


Украинская баннерная сеть
 

[Home]

Сайт поддерживается группой пользователей Информикс на Украине.

Hosted by NO-more.