Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Firebird, Interbase > Как сократить размер БД при удалении записей


Автор: Oberon83 29.5.2006, 16:54
Вопрос следующий:
У меня есть БД в которой в blob полях находятся текстовые документы. И программа, которая с этой БД работает (Builder C++ 6). Допустим при вставке в БД документа (размер 20Mb) размер базы увеличивается тоже примерно на 20 Mb (точно не замечал), а при удалении документа остается точно таким же, т.е. размер ее не уменьшается на 20 Mb. Каким образом можно ужать БД? Чтобы ее размер стал таким же, каким был до вставки записи? Возможно ли это вообще? Компоненты для работы с БД - IB. 
Заранее благодарен. 

Автор: Alex 30.5.2006, 00:50
По умолчанию сборка муссора производится автоматически через каждые 20000 транзакций (если говорить грубо) либо очистку можно выполнить в ручную спомощью утилиты gfix c параметром -sweep
Цитата

gfix -sweep Путь_до_БД -user SYSDBA -pas masterkey

Либо сборка муссора выполняется при бэкап-ресторе 

Автор: Nikola661 25.9.2007, 02:42
Есть БД par.fdb в ней были данные, я очистил все таблицы, а БД свой размер не поменяла так и осталось 700 Мб.
Пробовал так:

Код

gfix -sweep -user sysdba -password masterkey C:\data\LINK\LINK.FDB



как уменьшить размер не делая backup-restore???  smile 

Автор: Akella 25.9.2007, 08:37
Nikola661, тебе ж дали пример

Автор: Nikola661 25.9.2007, 11:45
Цитата(Akella @ 25.9.2007,  08:37)
Nikola661, тебе ж дали пример

Цитата

gfix -sweep -user sysdba -password masterkey C:\data\LINK\LINK.FDB


не помогает, размер не уменьшается

Автор: Akella 26.9.2007, 14:38
да, действительно

Автор: Akella 27.9.2007, 10:34
Как выяснилось, "gfix -sweep" и не должна уменьшать размер базы
И без бэкап/рестор никак нельзя уменьшить размер базы, по крайней мере на версии FB 2.0 и меньше.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)