Когда я удаляю строки, эти строки помечены только для удаления, и новые данные могут быть сохранены там, но можно принудительно освободить память? Как ?Informix - как освободить память?
ответ
Во-первых, это действительно дисковое пространство, а не память, о которой вы беспокоитесь, я думаю. Память, используемая удаленной строкой, является лишь частью изображения страницы (или нескольких изображений страницы, если размер строки достаточно большой).
Во-вторых, на самом деле нет способа освободить дисковое пространство, связанное с строкой. Все дисковое пространство, выделенное фрагменту, остается в использовании. Он использовался до того, как строка была создана и остается в использовании после удаления строки. Informix обрабатывает выделение.
В чем проблема? Из-за удаленной строки вы не исчерпываете места в Informix или на уровне o/s.
Если вы хотите вернуть место для хранения, занятое удаленными строками, вы можете выгрузить таблицу, удалить таблицу, заново создать таблицу, загрузить выгруженные строки в новую новую таблицу, которую вы только что создали, создавать индексы и обновлять статистику таблицы. Обратите внимание, что это также оптимизирует таблицу для повышения производительности.
В зависимости от вашей версии Informix вы можете использовать команды API администрирования SQL для оптимизации хранилища и консолидации свободного пространства в таблицах.
Используйте операцию переупаковки в режиме онлайн или в автономном режиме, а также для сокращения или дефрагментации разделов таблицы.
V11.50 или выше
• Рипак перемещает строку из конца раздела на пустое пространство страницы, присутствующее в верхнем конце раздела.
• Усадка высвобождает экстенты, которые были опустошены обратно в dbspace.
V12.10
• таблиц Дефрагментация или индексов для объединения несмежных экстентов.
См:
Руководство администратор Управления дискового пространства глава
администратор Справочника управление SQL Функция API