Отчего растет размер базы Acces?
Ребята ну растолкуйте, в маленьких локальных проектах использую базу данных Acces (нравится чем: очень простая разработка таблиц, простое подключение, и во всех книгах почему-то учат именно на них) но есть недостатки и самый интересный это
Почему размер базы т.е *.mdb файла растет при накоплении данными но при очистке таблице неуменьшается.
И еще сразу вопросик, какую базу могли бы посоветовать использовать, в локальных проектах? Почему то в жизни accesовские базы нигде не используются.
Что использовать? Если данных предполагается не очень много, то я бы предпочёл XML + ClientDataSet. К тому же, у него есть собственный формат хранения данных. Основная причина - бесплатность.
О размере. Файл не уменьшится. Если я не ошибаюсь, не уменьшится даже после оптимизации таблиц. Но это не страшно.
Он только из-за BLOB-ов и MEMO не уменьшается. Остальные паковать можно.
Для локальных проектов лично мне нравится исgользовать mysql 3.23, т.к. он бесплатен для некоммерческих проектов. Если же нужно однозначино бесплатное, то можно выбрать что-то другое - dbf, Firebird или вообще хранить данные в том же xml. Выбор обычно зависит от внешних условий.
Цитата:
При удалении данных из таблиц уменьшения размера самой БД не происходит потому, что данные физически так и остаются в файлах БД. Так делают многие СУБД. Потому что проще и быстрее просто пометить данные как удалённые, чем физически их удалить. Обычно в таких случаях имеется какой-либо способ упаковки базы данных, при котором удалённые записи физически удаляются из файлов.
Конечно имеются: меню "Сервис \ Служебные программы \ Сжать и восстановить...".
Требует монопольного доступа администратора к БД, сопровождается закрытием и переоткрытием. Однако сам процесс занимает всего несколько секунд и вполне может выполняться под конец рабочего дня.
Цитата: el scorpio
Конечно имеются: меню "Сервис \ Служебные программы \ Сжать и восстановить...".
Требует монопольного доступа администратора к БД, сопровождается закрытием и переоткрытием. Однако сам процесс занимает всего несколько секунд и вполне может выполняться под конец рабочего дня.
Требует монопольного доступа администратора к БД, сопровождается закрытием и переоткрытием. Однако сам процесс занимает всего несколько секунд и вполне может выполняться под конец рабочего дня.
Кстати, если интересно как помять базу Access могу предложить. Хотя у меня может и путанный вариант : я делаю COM - объект на VB (у него удобнее доступ к Access, хотя может я и не прав, давненько было сделано ) а потом обращаюсь к нему из Builder. Можно из Delphi , не принципиально.
Спасибо всем за ответы, все приму к сведению. Я так и предполагал, что данные не удаляются, их просто невидно. Одно обидно, что база все наращивается. Почему поднял такой вопрос. Я тут недавно сделал небольшой проект, который 2 текстовых файла переводит в Acces овскую базу, свежая база практически весящая около 100 килобайт после выполнения модуля получает размер в 600 Мб, при выполнении тойже самой процедуры, в которой в начале стоит delete from pereras далее идет опять манипуляция с текстовыми файлами увеличивается примерно на 300 мб. Хотя программа рассчитана на бесконечное обработтку файлов, т.е. сколько пользователю нужно столько он и будет нажимать кнопку, база постоянно увеличивается. Самое интересное что 2 текстовых файла имеют размер 10мб, и 5мб, а база растет в таких сумасшедших размерах. Конечно поля таблиц сделаны с запасом в 100 символов. Но в сеже интересно было бы знать. Еще раз огромное Спасибо всем за ответы и зато что не обсмеяли и не послали. Чем кстати этот форм мне и нравится, это видно даже по дате регистрации.