Сборка мусора. gbak и gfix
-
- Сообщения: 3
- Зарегистрирован: 18 дек 2006, 07:43
Сборка мусора. gbak и gfix
Здравствуйте!
Почитал я статьи на сайте про сборку мусора
и у меня возник такой вопрос:
в чем разница gbak.exe (без ключа -g) и gfix.exe -sweep
Стоит ИБ7.5, днем очень активная работа с базой идет.
Каждую ночь делается бэкап gbak (без ключа -g)
Надо ли после этого еще gfix -sweep делать?
Почитал я статьи на сайте про сборку мусора
и у меня возник такой вопрос:
в чем разница gbak.exe (без ключа -g) и gfix.exe -sweep
Стоит ИБ7.5, днем очень активная работа с базой идет.
Каждую ночь делается бэкап gbak (без ключа -g)
Надо ли после этого еще gfix -sweep делать?
странно. статьи прочитал, а разницу не понялв чем разница gbak.exe (без ключа -g) и gfix.exe -sweep

разница лишь в том, что задача gbak - это сделать резервную копию.
А без ключа -g он занимается КООПЕРАТИВНОЙ сборкой мусора.
gfix -sweep это ПРИНУДИТЕЛЬНАЯ сборка мусора.
ну и еще, gbak без -g не может продвинуть застрявший oit. так что если он застрял, sweep пускать придется все равно.
поэтому, вызывать gbak без ключа -g - сомнительное занятие.
-
- Сообщения: 3
- Зарегистрирован: 18 дек 2006, 07:43
-
- Сообщения: 3
- Зарегистрирован: 18 дек 2006, 07:43
Это ПРИНУДИТЕЛЬНАЯ сборка мусора.http://www.ibase.ru/devinfo/hddspeed.htm
Сборка мусора
Старт sweep может проявляться как внезапное замедление работы в течение дня или через несколько дней после restore. Когда подобные "замедления" неприемлемы, имеет смысл отключить автоматическую сборку мусора утилитой gfix (-housekeeping 0), и делать sweep вручную (тем же gfix) или при backup (без ключа -g).
Процесс с именем COLLECTOR занимается КООПЕРАТИВНОЙ сборкой мусора.http://www.ibase.ru/devinfo/garbage.htm
Кооперативная сборка мусора срабатывает при чтении. Под чтением кроме select также подразумеваются и update и delete.
- кооперативная фоновая. Появилась в IB 6 SuperServer. Сборкой мусора занимается отдельный thread...
Всё-таки получается gbak не связан с кооперативной сборкой мусора.
А отличия только в том что gbak не может продвинуть застрявший OIT.
ээээ...
кооперативная сборка мусора - это сборка мусора при его обнаружении. Мусор обнаруживается в основном при чтении данных.
gbak, это такая программа, которая стартует транзакцию snapshot, и читает ВСЕ данные в БД. Следовательно, gbak как и любая другая программа, работающая с БД, будет заниматься кооперативной сборкой мусора.
Но, gbak как обычная программа, не может делать действия, которые выполняет gfix -sweep. Как минимум - подвигать вперед OIT.
Вообще, лично я смысла запускать gbak без -g вообще не вижу. Есть мусор, нет мусора - задача gbak сделать резервную копию.
Можно, конечно, опосредованно возложить на него запуск кооперативной сборки мусора, но на старых версиях сервера (см. выше) это все будет происходить значительно медленнее, чем просто запустить gfix -sweep.
Можно самостоятельно произвести эксперимент: отрубить автоматический sweep в базе, и мониторить накопление мусора ibanalys-ом. Если мусора наберется много, то
1. остановить сервер
2. скопировать БД
3. запустить gbak -b
посмотреть на загрузку сервера, и время выполнения.
4. затем остановить сервер, подсунуть серверу копию БД
5. запустить gbak -b -g
сравнить время и загрузку с пунктом 3
обязательно надо иметь в виду, что кооперативная фоновая (а не явная) сборка мусора в IB 6 и выше имела слишком низкий приоритет, поэтому когда она начиналась по всей базе, невозможно было предсказать момент ее окончания. А тушить сервер при работающей сборке мусора - опасно для базы.
Вот собственно, аргументы, которые и изложены в упомянутых статьях.
кооперативная сборка мусора - это сборка мусора при его обнаружении. Мусор обнаруживается в основном при чтении данных.
gbak, это такая программа, которая стартует транзакцию snapshot, и читает ВСЕ данные в БД. Следовательно, gbak как и любая другая программа, работающая с БД, будет заниматься кооперативной сборкой мусора.
Но, gbak как обычная программа, не может делать действия, которые выполняет gfix -sweep. Как минимум - подвигать вперед OIT.
потому что если вызывать gbak без ключа -g, то это приведет к кооперативной сборке мусора, что ЗАМЕДЛИТ работу сервера вообще и gbak в частности. На разных версиях серверов это действует по разному, особенно влияет сборка мусора в неуникальных индексах. Но и это побеждено в IB 7.1/FB 2.0.почему?
Вообще, лично я смысла запускать gbak без -g вообще не вижу. Есть мусор, нет мусора - задача gbak сделать резервную копию.
Можно, конечно, опосредованно возложить на него запуск кооперативной сборки мусора, но на старых версиях сервера (см. выше) это все будет происходить значительно медленнее, чем просто запустить gfix -sweep.
Можно самостоятельно произвести эксперимент: отрубить автоматический sweep в базе, и мониторить накопление мусора ibanalys-ом. Если мусора наберется много, то
1. остановить сервер
2. скопировать БД
3. запустить gbak -b
посмотреть на загрузку сервера, и время выполнения.
4. затем остановить сервер, подсунуть серверу копию БД
5. запустить gbak -b -g
сравнить время и загрузку с пунктом 3
обязательно надо иметь в виду, что кооперативная фоновая (а не явная) сборка мусора в IB 6 и выше имела слишком низкий приоритет, поэтому когда она начиналась по всей базе, невозможно было предсказать момент ее окончания. А тушить сервер при работающей сборке мусора - опасно для базы.
Вот собственно, аргументы, которые и изложены в упомянутых статьях.