Проблемы с Blob
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Суть такова.
Мне необходимо чтобы из таблицы Парадокса удалялись изображения в виде Блоб.
Оно сохраняет данные Блоб в файл *.МВ , и при удалении записи оно запись-то удаляет, вот только этот самый файл в размерах не именяется так и остается с максимальным размером.
Может кто подскажет как удалить эти изабражения из файла *.МВ (еслиб можно было слелать таблице что-то на подобие "Pack")
Мне необходимо чтобы из таблицы Парадокса удалялись изображения в виде Блоб.
Оно сохраняет данные Блоб в файл *.МВ , и при удалении записи оно запись-то удаляет, вот только этот самый файл в размерах не именяется так и остается с максимальным размером.
Может кто подскажет как удалить эти изабражения из файла *.МВ (еслиб можно было слелать таблице что-то на подобие "Pack")
-
- Сообщения: 230
- Зарегистрирован: 31 авг 2006, 13:11
если я не ошибаюсь изображения тоже удаляются. Просто под базу изначально резервируется определенное дисковое пространство(отсюда и большой неменяемый размер базы ). Базу нужно сжимать. Как пока не помню напишу завтра есть до меня кто-то не напишет.
Пространство не резервируется, просто записи помечаются как удаленные - сжатие базы как раз и удаляет эти записи окончательно. Самого сжатия как такогого нет, как вы уже догадались.
It's a long way to the top if you wanna rock'n'roll
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Парадокс в отличии от dbf очень грамотно работает с удалёнными записями - он их помечает как удалённые, а при добавлении новых записей использует место занимаемое ранее удалёнными записями, а если места не хватает, то увеличивает файл в размерах. Когда-то меня это тоже беспокоило, но я провёл ряд тестов в который убедился, что если количество удаляемых и добавляемых записей одинаковое, то база в размерах не увеличивается (и это правильно, т.к. изменение размера файла очень тяжёлая операция).
А сжатие базы можно выполнить через Database Desktop, другого пути не знаю.
А сжатие базы можно выполнить через Database Desktop, другого пути не знаю.
И это не только "правильно", а еще и полезно - из-за частых изменений размера файла происходит его фрагментация на диске. Хотя операция сама не тяжелая, она просто тупая - перемещая косочки файлов из места, куда необходимо расширится, ОС зачастую пихает их очень далеко от остальных кусков, вместо того, чтобы разместить их в первом попавшемся свободном месте." писал(а):(и это правильно, т.к. изменение размера файла очень тяжёлая операция)
Было бы умнее удаленные складывать в конце, чтобы при каждом запросе по ним не бегать. Удалил запись - пометилась как удаленная, поменялась местами с последней неудаленной записью. Согласитесь, это не очень долго сделать..." писал(а): Парадокс в отличии от dbf очень грамотно работает с удалёнными записями
It's a long way to the top if you wanna rock'n'roll
Автор сообщения:
Я понимаю что записи "как-бы помечаются на удаление", но сама бинарная информация на удаляется из файла она там и остается, а когда дабавляется новая информация то она перезаписывает существующую.
Но мне бы узнать, как же все таки очистить то что не нужно и уменьшить файл, а то база данных с одной картинкой и весящая эдак мегабайт под 200 как то не смотрится.
Я понимаю что записи "как-бы помечаются на удаление", но сама бинарная информация на удаляется из файла она там и остается, а когда дабавляется новая информация то она перезаписывает существующую.
Но мне бы узнать, как же все таки очистить то что не нужно и уменьшить файл, а то база данных с одной картинкой и весящая эдак мегабайт под 200 как то не смотрится.
- SergeyS
- Сообщения: 196
- Зарегистрирован: 21 ноя 2006, 17:12
- Откуда: Хакасия, Абакан
- Контактная информация:
Если такое и делать, то только опционально - данная фича помогала бы только при сканировании таблицы без индекса, а иначе при перемещении записи в другое место необходимо также вносить ещё изменения в индекс" писал(а):Было бы умнее удаленные складывать в конце, чтобы при каждом запросе по ним не бегать
повторяю:" писал(а):как же все таки очистить то что не нужно и уменьшить файл
а из программы паковка базы не предусмотрена (во всяком случае через VCL)сжатие базы можно выполнить через Database Desktop
Автор:
В этом-то и суть проблемы. Может быть есть какие нибудь средства, именно программно выполнять эту операцию (упаковку)SergeyS писал(а): повторяю:
а из программы паковка базы не предусмотрена (во всяком случае через VCL)
- Naeel Maqsudov
- Сообщения: 2570
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Конечно есть (ведь Database Desktop написан на том же VCL и является не более чем клиентом BDE)
Используйте BDE API. Конкретно функцию DbiPackTable
(Для этого надо добавить DBE в секцию Uses).
PS
Вообще, вы можете написать свой собственный Database Desktop. С базой Paradox можно делать абсолютно все.
PPS
По функциям BDE API есть подробная стандартная справка с примерами на C++ и Object Pascal. Так что жмите F1/
Используйте BDE API. Конкретно функцию DbiPackTable
(Для этого надо добавить DBE в секцию Uses).
PS
Вообще, вы можете написать свой собственный Database Desktop. С базой Paradox можно делать абсолютно все.
PPS
По функциям BDE API есть подробная стандартная справка с примерами на C++ и Object Pascal. Так что жмите F1/
Спасибо, буду пробовать (надеюсь сработает)