Параметр -G

Обсуждение вопросов по администрированию СУБД Progress OpenEdge
Аватара пользователя
svr
Старожил
Сообщения: 68
Зарегистрирован: 13 июл 2001, 03:00

Параметр -G

Сообщение svr » 11 мар 2005, 06:41

В одном из топиков было сказано, что использовать -G 0 - плохая привычка. Объясните, пожалуйста, на что влияет этот параметр на практике? А то по доке непонятно, на чем отражается эта Before-image Cluster Age. Можно ли использовать, например, proutil truncate bi -G 0, чтобы сократить время ожидания, когда команда начнет работать? Что может сломаться?

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: Параметр -G

Сообщение George » 11 мар 2005, 08:36

Параметр -G используется в трех разных ситуациях:

1) При crash recovery для определения стартого кластера, с которого начинается redo фаза.

2) При работе базы определяет время, после которого можно повторно использовать bi кластер. Кластер должен быть не "моложе" чем max(-G, 60).

3) При усечении bi файла задает интервал времени, которое утилита должна подождать после завершения процесса crash recovery прежде чем удалить старый bi файл и создать новый.

Во всех трех случаях таймаут нужен из-за того, что в db файлы Progress пишет в асинхронной (буферизированной) моде, т.е. дается команда записать, данные копируются в системный кэш и процесс не ждет их актуального сохранения на диск.

Например использование -G 0 при truncate bi может привести к тому, что если не повезет и сразу после выполнения этой команды операционная система рухнет, то данные в системном кэше будут потерены, а bi файл, по которому их можно было бы восстановить во время crash recovery, уже удален. Т.е. база будет повреждена.

Значение параметра -G по умолчанию составляет 60 секунд. Это означает, что Progress предполагает, что за это время все данные из системного кэша будут сброшены на диск. Progress подталкивает операционную систему к этому через системный вызов sync(). Кстати сам по себе вызов sync на некоторых ОС не гарантирует завершение сброса буферов. ОС также обычно запущен демон, который вызывает функцию sync по-умолчанию каждые 30 секунд.

Резюме - использовать параметр -G со значением меньшим чем значение по умолчанию можно только на базе, которая значит для вас меньше чем те "лишние" 60 секунд, которые truncate bi ждет перед завершением.

Кстати с параметром -directio, с которым Progress пишет в db файлы в синхронном режиме, т.е. когда вызов write() ожидает актуального сохранения данных на диск, таймаут -G становиться несущественным. Однако Progress все равно использует ненулевое значение для -G.

Такая команда безопасна:
proutil db -C truncate bi -directio -G 0

Однако насколько при этом замедлится процесс crash recovery после падения базы во время ее транзакционно активной работы - затрудняюсь оценить.

<Переносим в F.A.Q.?> :roll:

Кстати для команды "proutil db -C dbanalys -G 0" параметр -G имеет смысл только всмысле 1), если, конечно, утилита запускается в offline. Т.е. здесь смысла в использовании -G 0 вообще-то нет.

Аватара пользователя
svr
Старожил
Сообщения: 68
Зарегистрирован: 13 июл 2001, 03:00

re:Параметр -G

Сообщение svr » 11 мар 2005, 08:52

Да, я думаю, полезно это пометить в FAQ. Заодно и еще один вопрос-ответ туда:
В каких случаях нужно использовать -directio ? В советах на оптимизации производительности (не помню, где) читал, что стоит включить этот параметр при старте сервера, т.к. без него будет выполняться двухуровневое кеширование - в кеше сервера БД и в дисковом кеше ОС. Так ли это?

Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: re:Параметр -G

Сообщение George » 11 мар 2005, 11:08

Последний раз редактировалось George 11 мар 2005, 11:20, всего редактировалось 1 раз.

Аватара пользователя
svr
Старожил
Сообщения: 68
Зарегистрирован: 13 июл 2001, 03:00

re:Параметр -G

Сообщение svr » 11 мар 2005, 11:16


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: re:Параметр -G

Сообщение George » 11 мар 2005, 11:24


alex
Старожил
Сообщения: 38
Зарегистрирован: 13 июл 2001, 03:00

re:Параметр -G

Сообщение alex » 11 мар 2005, 14:15


Аватара пользователя
George
Старожил
Сообщения: 2871
Зарегистрирован: 12 май 2004, 17:03
Откуда: Питер

Re: re:Параметр -G

Сообщение George » 11 мар 2005, 18:21