Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2010, 14:12   #1
RuVarez
Форумчанин
 
Аватар для RuVarez
 
Регистрация: 25.08.2010
Сообщений: 258
По умолчанию Firebird - fdb файл увеличивается при записи полей, но если базу очищаешь, размер остается таким же

Привет всем! Есть такая проблемка - Firebird 2.1 - fdb файл увеличивается при записи полей, но если базу очишаеш, размер остается таким же. Пробовал Backup, Restore не помогает!
RuVarez вне форума Ответить с цитированием
Старый 23.09.2010, 18:09   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

Цитата:
Как уменьшить размер базы данных?

Обычно такой вопрос возникает, когда часть каких-то данных (или вообще все тестовые данные) в базе данных удалена.

Файл базы данных внутри похож на файловую систему. То есть, когда вы удаляете файл на логическом диске, размер логического диска не уменьшается, потому что удаленный файл образует кусок свободного пространства в том месте, где он находился. А это не обязательно самый конец файла, чтобы логический диск мог быть просто уменьшен на его размер. Примерно то же самое и в базе данных - освободившееся место будет использовано повторно новыми данными.

Поскольку операция "дефрагментации" базы данных могла бы быть выполнена только в монопольном режиме, возможность "дефрагментации" и уменьшения файла базы данных "на ходу" в Firebird и InterBase отсутствует.
Если требуется сжать файл базы данных, то нужно использовать операции backup/restore (gbak -b .../gbak -c ...).

Кроме того, в версионном движке при удалении записей свободное место не возникает, а наоборот, возникают новые версии, т.е. файл базы данных может увеличиться. Эти версии будут находиться в базе данных до тех пор, пока не будут убраны как мусор. И даже в этом случае файл базы не уменьшится, просто в нем будет больше свободного пространства для новых или измененных данных.

Увеличение размера файла - достаточно затратная по ресурсам операция для файловой системы. Поэтому, новые версии InterBase и Firebird содержат дополнительную функциональность:
InterBase 2007 SP2 имеет средства для задания исходного размера файла БД при создании БД или restore
Firebird 2.1 при необходимости увеличивает размер файла "порциями", которые больше чем размер одной страницы
вот так вот
maLoy*508 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Присвоить разные значения параметру при вставке записи в базу Gover БД в Delphi 3 19.04.2010 21:37
При изменении размеров Timage canvas не увеличивается BloodMaX Общие вопросы Delphi 1 15.04.2010 12:28
При удалении записей значения полей с type:=Autoincrement (т.е+) в оставшихся полей не изменяются kenta БД в Delphi 2 29.10.2009 08:28
Как выводить значения отдельных полей таблицы при выборе записи в DBGrid Sinker БД в Delphi 9 25.03.2009 12:28