![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
IBase [D5, IB6.x]
dmi-vancev © (2003-03-16 01:19:00)Мастера нужен совет!
Размер базы данных постоянно увеличивается!!!
Программа следит за всеми записями и периодически удаляет
самые старые, таким образом в БД храняться данные только
за определённый диапазон времени + удалённые(помечанные записи).
На сегодняшний момент Администратору БД периодически
приходиться делать SWEEP-BUCKUP-RESTORE - ну очень долго, а главное неудобно, так клиетнские программы постоянно-непрерывно
работают с БД и их приходится принудительно отключать.
Мастера, может есть трюк? или IBASE :( или ...
Alexandr (2003-03-18 07:27:00) [1]
> Привет, Alexandr :)
> Был бы порядок, я бы тебя не звал !
> Реально прирост БД состовляет 15 Мб в сутки.
это реально в нынешней ситуации. Увы.
> Система удаляет "старые" записи и добавляет новые.
это хорошо, что работает.
> Настройки сервера - SWEEP на 20000.
а вот это лучше отключить в 0 от греха подальше.
> Добавление данных: INSERT или UPDATE.
логично. А как же по-другому
> Теперь смотри :))) удалили 100 записей, а изменили (UPDATE)
> - 1000, количество данных меньше а,вот объёмчик вырос!!!.
сервер не удаляет и не обновляет - он создает НОВЫЕ ВЕРСИИ записей, поэтому объем растет. Но если эти версии окажется никому не нужными (т.е. нет заинтересованных в них транзакций), то при сборке мусора (хоть теневой - при последущем select или backUp с выключенным "disable garbage collection"), хоть явной - при sweep) место, занятое старыми версиями записей пометится как свободное и будет использовано в будущем под новые версии записей.
Обращаю внимание - размер файла не уменьшится, но в файле появятся пустые места, в которые будут писаться новые записи.
> 1. DATA.GDB ->33 898 496 байт
> 2. SWEEP DATA.GDB ->33 898 496 байт
естественно. Размер файла никогда не уменьшается. (backup - restore не рассматриваем, т.к. это пересоздание БД)
> 3. DELETE FROM DATA WHERE DATA_DATE<"01.02.2003"->47 443
> 968 байт
> о как подросли!
конечно. Версий записей стало больше их же надо куда-то писать.
И как только все заитересованные в старых версиях записей (которые были запущены ранее delete и не были завершены) закончатся, так первый же селект пометит эти версии как ненужные и место станет свободным, для последующего занятия новыми значениями.
> 4. BACKUP-RESTORE-> 34 844 672 !:O (тоже фокус)
> 5. RESTORE-> 33 894 496 :), вот теперь вроде порядок.
после backup\resore старых версий записей нет, естественно. База становится девственно чистой.
Накдеюсь, понятно объяснил.
тебе еще поможет
www.ibase.ru
Rad (2003-03-18 05:19:00) [2]См http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1047932551&n=1
dmi-vancev (2003-03-18 01:01:00) [3]Привет, Alexandr :)
Был бы порядок, я бы тебя не звал !
Реально прирост БД состовляет 15 Мб в сутки.
Система удаляет "старые" записи и добавляет новые.
Выборка данных происходит не реже записи данных.
Настройки сервера - SWEEP на 20000.
Добавление данных: INSERT или UPDATE.
Теперь смотри :))) удалили 100 записей, а изменили (UPDATE) - 1000, количество данных меньше а,вот объёмчик вырос!!!.
Или Вот:
1. DATA.GDB ->33 898 496 байт
2. SWEEP DATA.GDB ->33 898 496 байт
3. DELETE FROM DATA WHERE DATA_DATE<"01.02.2003"->47 443 968 байт
о как подросли!
4. BACKUP-RESTORE-> 34 844 672 !:O (тоже фокус)
5. RESTORE-> 33 894 496 :), вот теперь вроде порядок.
Буду рад, если поможешь!
Alexandr (2003-03-17 06:12:00) [4]
> SWEEP - это замечательно, но на мой взгляд он проблеммы
> не снимает:
> 1. SWEEP - занимает продолжительное время и ресурсы у сервера,что
> ОЧЕНЬ замедляет работу клиентских приложений, что в нашем
> случае непреемлемо;
юзай yaffil, выдели время специальное для sweep
> 2. Где гарантии того, что база не будет расти пусть и медлеенно,
> даже при периодических SWEEP? т.е. без BUCKUP-RESTORE не
> обойтись ?:(
:) а с храна-ли она расти будет, если количество данных не меняется. Вообще и sweep делать необязятельно - при выборках он сам худо-бедно делаться будет....
А вообще все зависил от порядка, в том числе и в головах...
dmi-vancev (2003-03-16 16:53:00) [5]SWEEP - это замечательно, но на мой взгляд он проблеммы не снимает:
1. SWEEP - занимает продолжительное время и ресурсы у сервера,что ОЧЕНЬзамедляет работу клиентских приложений, что в нашем случае непреемлемо;
2. Где гарантии того, что база не будет расти пусть и медлеенно, даже при периодических SWEEP? т.е. без BUCKUP-RESTORE не обойтись ?:(
Alexandr (2003-03-16 09:07:00) [6]кто бы спорил....
y-soft (2003-03-16 09:04:00) [7]>>Restore позволяет избавиться от мусора и автоматически >>исправляет некоторые ошибки
Следует читать:
Backup/Restore позволяет избавиться от мусора и автоматически исправляет некоторые ошибки
y-soft (2003-03-16 09:01:00) [8]Кроме того во всех руководствах настоятельно рекомендуется делать контрольный Restore после Backup
y-soft (2003-03-16 08:59:00) [9]Restore позволяет избавиться от мусора и автоматически исправляет некоторые ошибки
Alexandr (2003-03-16 08:56:00) [10]для резервных копий базы достаточно backup
y-soft (2003-03-16 08:42:00) [11]Backup/Restore все же делать периодически надо, хотя бы для того, чтобы иметь резервные копии базы
y-soft (2003-03-16 08:38:00) [12]Чем меньше размер страницы, тем медленнее растет объем. Но и скорость работы уменьшается
Alexandr (2003-03-16 08:25:00) [13]достаточно только sweep делать.
Тогда старые ненужные версии записей будут очищаться и место из-под них будет отдаваться новым записям.
Объем застабилизируется.
Или у вас винт маленький? Тогда это клиника.