C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Почему раздувается бд?
** Tatiana
Отправлено: 29.09.2005, 07:33


Не зарегистрирован







Access 2000, есть таблица , одно поле — дата/время, 12 полей-ординарное с плавающей точкой. Программно (Builder 6, компонта ADOQuery) добавляю в нее записи, нцулевых значений нет, удаления записей не бывает. Така вот, после добавления 100 000 записей бд весит 50 М, после сжатия — восстановления — 6 М. Почему так происходит и можно ли как-то бороться?
AVC
Отправлено: 29.09.2005, 08:00


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE
Почему так происходит и можно ли как-то бороться?

1. Такова жизнь. smile.gif
2. Перестраивать базу (сжатие — восстановление). Поищите, на форуме выкладывали код как это делать программно.
Zoth
Отправлено: 29.09.2005, 21:04


Ученик-кочегар

Группа: Участник
Сообщений: 14



Насколько я понимаю это хранится журнал транзакций. тоесть все изменения которые в происходили дублируют фактически всю информацию во всех ее стадиях. Рассказывать подробнее лень, если интеренсо почитай специфическую литературу.. Сжатие просто чистит этот журнал.. вот и все. Это тоже самое что Бэкап-ресторе на интербэйзе например (правда там не журнал транзакций а версии записи)... А лечить это программно можно, делай иногда сжатие и все...
olegenty
Отправлено: 03.10.2005, 12:27


Ветеран

Группа: Модератор
Сообщений: 2412



2 Zoth — всё нифига не так.
Zoth
Отправлено: 03.10.2005, 19:45


Ученик-кочегар

Группа: Участник
Сообщений: 14



QUOTE (olegenty @ 03/10/2005, 12:27)
2 Zoth — всё нифига не так.

а как тогда?
olegenty
Отправлено: 04.10.2005, 11:27


Ветеран

Группа: Модератор
Сообщений: 2412



в первую очередь вспомни, почему DBF файлы ТОЛЬКО раздувались, но НИКОГДА не становились меньше? или ты намекаешь на наличие в них лога транзакций? вот потому и ЛЮБЫЕ файлы БД могут только расти, пока ты сам не сожмешь их внешним средством, суть (как правило) — создашь новые файлы с теми же именами.
Guest
Отправлено: 04.10.2005, 11:41


Не зарегистрирован







QUOTE (olegenty @ 04/10/2005, 11:27)
в первую очередь вспомни, почему DBF файлы ТОЛЬКО раздувались, но НИКОГДА не становились меньше? или ты намекаешь на наличие в них лога транзакций? вот потому и ЛЮБЫЕ файлы БД могут только расти, пока ты сам не сожмешь их внешним средством, суть (как правило) — создашь новые файлы с теми же именами.

Ну с ДБФами все ясно.... Но например у МС SQL хранится лог транзакций, который можно чистить.. а в интербэйзе хранятся версии записей... это не тоже самое что в ДБФ... в ДБФе просто помечалось удаленным.. но смотри... в теме пишется что удаление записей не происходит. Следовательно это не удаленные записи которые можно просто почистить... А ваще то надо бы литературу почитать как там в акцессе smile.gif))))
olegenty
Отправлено: 04.10.2005, 16:41


Ветеран

Группа: Модератор
Сообщений: 2412



вот я на то тебе и намекаю. потому что версии Interbase это не то же самое, что лог транзакций MSSQL, а лог транзакций MSSQL — это вообще отдельный набор файлов, каждый из которых также ТОЛЬКО УВЕЛИЧИВАЕТСЯ, и чтобы он уменьшился, надо сделать некоторое количество действий. с Access другая истроия. суть всё равно та же — файлы не могут уменьшаться, они могут только расти. для примера — напиши свою собственную файловую "субд". это пара дней работы, зато быстро осознаешь, каких усилий стоит действительно уменьшить размер файла.
Zoth
Отправлено: 04.10.2005, 20:34


Ученик-кочегар

Группа: Участник
Сообщений: 14



Я понимаю что это вообще разные вещи, но смысл что они обе влияют на размер БД.. Помоему просто этот лог транзакций в акцессе хранится вместе с базой (В MSSQL он отдельно)... Всеравно проблема в этом. smile.gif)) спорим то ни о чем... Доказываем друг другу помоему одно и тоже.. чето я просто мысли уже формулироват не могу.. сижу тут как овощь.. юросил курить теперь из-за монитора не встаю почти..
olegenty
Отправлено: 05.10.2005, 06:48


Ветеран

Группа: Модератор
Сообщений: 2412



да нет в Access лога транзакций.
Gedeon
Отправлено: 05.10.2005, 11:24


Ветеран

Группа: Модератор
Сообщений: 1742



Ну похоже размер растет не только из-за добавления записей, а потом удаления их не физически, а так сказать информационно, что происходит при сжатии файла. Это же у нас некая помесь среды разработки с БД, посему есть подозрение, что там еще всякая ересь хранится служебная, но никакого лога транзакций там точно нет, т.к. нет никакой возможности отката, а на спину он тогда вообще нужен? да и собственно, чтобы говорить о чем-то надо как минимум искать инфу у первоисточника или сторонних авторов ну или как минимум у людей к-рые этим занимаются постоянно, посему тут прямая дорога на sql.ru
Zoth
Отправлено: 05.10.2005, 12:36


Ученик-кочегар

Группа: Участник
Сообщений: 14



QUOTE (Gedeon @ 05/10/2005, 11:24)
Ну похоже размер растет не только из-за добавления записей, а потом удаления их не физически, а так сказать информационно,

В вопросе четко написанно что записи вообще не удаляются..... раз нету лога транзакций, то для меня становится загадкой раздутие БД.

Да и фиг с ней... smile.gif)) дай бог никогда больше не буду с акцессом работать

Отредактировано Zoth — 05/10/2005, 12:38
olegenty
Отправлено: 05.10.2005, 13:28


Ветеран

Группа: Модератор
Сообщений: 2412



но файлы баз так и будут раздуваться... невредно разобраться в природе smile.gif
Daemon`
Отправлено: 31.10.2005, 19:00


Не зарегистрирован







Раздувается мдб из-за логического удаления записей в таблицах и на формах (например создание, а потом удаление компонент формы/отчетов). Проэкспериментировав с этим пришел к выводу — лучший вариант — экспорт текущей БД в новую БД. Например старая БД весила 17 мБ, экспорт в только что созданную пустую — 6 мБ.

По этому вопросу очень много обсуждали на sql.ru, раздел FAQ.
olegenty
Отправлено: 01.11.2005, 11:56


Ветеран

Группа: Модератор
Сообщений: 2412



хотел бы я посмотреть на промышленную БД весом в 17 МВ. хотел бы также посмотреть, как она будет экспортироваться, если работает в круглосуточном режиме (например, биллинговая система, или система контроля хода какого-либо процесса)...
Gedeon
Отправлено: 01.11.2005, 12:17


Ветеран

Группа: Модератор
Сообщений: 1742



Ну, не надо, ты бы додумался строить промышленную систему любой сложности на MS ACCESS. Хотел бы я посмотреть smile.gif .
olegenty
Отправлено: 01.11.2005, 15:27


Ветеран

Группа: Модератор
Сообщений: 2412



ну нафиг. FB/IB, либо MSSQL, в зависимости от задачи. увы, пока не освоил Oracle.

Вернуться в Работа с базами данных в C++Builder