База данных Firebird продолжает расти

Этот мне интересен - несмотря на почти бессмысленное название. Я давно пользуюсь Firebird, но только недавно заметил интересное поведение.

Я использую встроенный firebird 1.5 и заметил, что если я заполню базу данных большими двоичными объектами (скажем, на 10 МБ), размер базы данных увеличится. Затем я могу удалить все поля в базе данных, и размер файла БД останется прежним. В настоящее время он составляет 20 МБ и полностью пуст.

Я знаю, что это встроено в архитектуру firebird (для быстрого индексирования, проблем со скоростью и т. д.), но я всегда думал, что он уменьшится до исходного значения по умолчанию ~ 2 МБ.

Есть ли у кого-нибудь предложения по «выкачиванию» размера файла? Причина в том, что это космическая сознательная проблема. Если бы у меня было много места для работы, мне было бы все равно. Однако это не так, и мне нужно, чтобы все было как можно оптимальнее.

Спасибо!


person Liam    schedule 11.01.2010    source источник
comment
В SO принято принимать ответ, который вы считаете полезным, щелкнув пустую галочку рядом с ответом.   -  person Bob Jarvis - Reinstate Monica    schedule 17.01.2010


Ответы (1)


Единственный способ освободить неиспользуемое пространство в базе данных Firebird — сделать резервную копию, а затем немедленно восстановить эту резервную копию (ссылка: Часто задаваемые вопросы по Firebird).

Вот хорошее техническое объяснение того, почему это так.

Обратите внимание, что Firebird будет повторно использовать неиспользуемое в данный момент пространство, т.е. если вы поместите еще 10 МБ больших двоичных объектов сейчас, база данных не должна вырасти до 30 МБ.

person Blorgbeard    schedule 11.01.2010
comment
спасибо за ответ - но что делать, если размер базы данных из-за использования. Например, хранение в нем значений или больших двоичных объектов. Пользователь какое-то время использует базу данных, и я хотел бы, чтобы ее размер был уменьшен до 2 МБ по умолчанию (с сохранением всей информации), если она не должна быть 20 МБ. Имеет ли это смысл? Может я не понимаю вашей логики? - person Liam; 12.01.2010
comment
Обновил мой ответ. В принципе, кроме резервного копирования/восстановления, нет другого пути. Может быть, вы могли бы написать это как ночную/еженедельную задачу? - person Blorgbeard; 12.01.2010
comment
Спасибо! Я прочитал эту страницу /минус/ в нижней части, где упоминается резервное копирование/восстановление. Это имеет смысл, учитывая, насколько сложны указатели в системе подкачки. Спасибо, что нашли время и силы для публикации и указали мне на часть статьи о резервном копировании/восстановлении. - person Liam; 12.01.2010
comment
Разве вы не можете получить аналогичные результаты, запустив Sweep с помощью gfix? Я думал, что B&R был крайним вариантом. - person Vivian Mills; 18.01.2010