Механизм After-Imaging в OpenEdge
Оценка дискового пространства для AI-экстентов
Перед активацией After-imaging очень важно правильно оценить необходимое дисковое пространство, требуемое для хранения всех AI-экстентов базы данных. Например, если при использовании экстентов переменного размера закончится дисковое пространство, и при этом будет отсутствовать пустой экстент (статус EMPTY), то база данных будет аварийно остановлена. Этого можно избежать, если при запуске базы использовать параметр старта . В этом случае база данных только приостановит всю пользовательскую активность и отправит сообщение о недостаточности места в лог базы данных. Далее дело останется за администратором, которые должен выполнить определенные действия по восстановлению её работоспособности.
Существует несколько различных путей для определения количества генерируемых After-image данных. Для получения среднего максимального значения таких данных необходимо снимать статистику за короткий интервал времени, например каждые 5 минут в течение нескольких дней или даже месяцев.
Методы расчета объема After-image данных:
- На основании информации по After-imaging из VST;
- На основании информации по Before-image из VST;
- C использованием утилиты RFUTIL;
- C использованием утилиты PROMON.
Важно отметить, что ни один из этих методов не принимает во внимание пиковые нагрузки во время работы системы. Поэтому все расчеты носят приблизительный характер.
Использование информации об AI из VST
Данный метод применяется в том случае, когда механизм After-imaging уже активирован и необходимо сделать его работу более эффективной. Для использования виртуальных таблиц необходимо обратиться к таблице _ActAILog, в которой поля с соответствующей информацией называются _AiLog-TotWrites и _AiLog-BytesWritn. Поле _AiLog-TotWrites содержит информацию в блоках. Разница между значениями, полученными в начале и в конце периода, будет говорить о количестве записанных AI-блоков за период. Используя размер AI-блока можно узнать объем сгенерированных данных. Следующая небольшая часть ABL-кода поможет легко получить необходимые данные:
Листинг 1(vstai.p). Использования VST AI
find last _dbstatus no-lock. find last _actailog no-lock. display _dbstatus-aiblksize skip _ailog-totwrites skip _ailog-byteswritn skip _ailog-totwrites * _dbstatus-aiblksize label "Total AI Data" with side-labels.
Использование этого метода более предпочтительно по отношению к другим, т.к. он является наиболее гибким и простым, а так же не влияет на производительность системы.
Использование Before-Image
Как и в предыдущем методе, здесь для определения количества записанных AI-блоков используется информация из виртуальных таблиц, связанных с Before-Image. Для этого используется таблица _ActBILog и её поля – _BiLog-TotalWrts и _BiLog-BytesWrtn. Поле _BiLog-TotalWrts формируется из BI-блоков. На основании размера BI-блока можно определить размер сгенерированных данных.
Примечание: размер BI-блока должен быть равным размеру AI-блока. Запомните значения начала и конца периода, разница между ними и будет количеством блоков, записанных за этот период
Листинг 2 (vstbi.p). Использования VST BI
find last _dbstatus no-lock. find last _actbilog no-lock. display _dbstatus-biblksize skip _bilog-totalwrts skip _bilog-byteswrtn skip _bilog-totalwrts * _dbstatus-biblksize label "TOTAL BI DATA" with side-labels.
Если механизм After-imaging еще не активирован, то этот метод является единственным для расчета предполагаемого объема AI-данных.
Использование RFUTIL
Утилита RFUTIL используется для определения объема AI-данных с помощью командной строки. Для этого в начале и в конце желаемого периода необходимо выполнить следующую команду:
rfutil db-name -C aimage extent list
Результат работы команды будет примерно следующий:
Extent: 1 Status: Busy Type: Variable Length Path: /users/valeriy/lecAI/db1/sports.a1 Size: 632 Used: 545 Start: Thu Jul 9 16:10:55 2009 Seqno: 1 Extent: 2 Status: Empty Type: Variable Length Path: /users/valeriy/lecAI/db1/sports.a2 Size: 120 Used: 0 Start: N/A Seqno: 0 Extent: 3 Status: Empty Type: Variable Length Path: /users/valeriy/lecAI/db1/sports.a3 Size: 120 Used: 0 Start: N/A Seqno: 0
Здесь размер экстентов (поле Size) указывается в блоках по одному килобайту. Путем вычитания количества блоков в начале периода от количества блоков в конце периода получаем значение количества блоков, записанных за период. Важно заметить, этот метод может привести к некорректным результатам, поскольку между временем начала и временем окончания периода AI-экстенты могут обнуляться.
Использование PROMON
Запустите утилиту PROMON для базы данных, которая должна стать источником (source):
promon db-name
После запуска утилиты необходимо установить интервал сбора статистики. Для этого перейдите к пункту меню «Monitor sampling interval» по следующему пути R&D -> 5 -> 3. Введите значение 3600 (в секундах) и нажмите клавишу «Enter». Вернитесь на верхний уровень меню, нажав клавишу «P» и «Enter». Теперь перейдите к экрану «Activity: AI Log» для осуществления мониторинга (R&D -> 2 -> 6). Откроется окно, представленное на рисунке 2.
Рисунок 2 Экран Activity: AI Log
Обратите внимание на выделенное значение строки «Total AI writes». Для получения статистики за интервал в 60 минут (3600 секунд) введите и нажмите , появится сообщение «Sampling for 3600 seconds ….». По истечению 60 минут цифры изменятся. Запишите значение на пересечении строки «Total AI writes» и колонки «Total». Это и есть общее количество AI-блоков, сгенерированных в течение часа. Для получения среднего значения процесс сбора статистики нужно повторить несколько раз. Чем больше образцов вы получите, тем точнее будет среднее значение.
Теперь разделите среднее значение сгенерированных AI-блоков на размер AI-блока. Размер AI-блока можно найти в меню R&D -> 1 -> 10 AI Log, он указан в строке After-image block size, возьмите его и разделите на 1024, чтобы получить размер блока в килобайтах (8192/1024=8). После этого полученное значение умножьте на среднее значение сгенерированных AI-блоков. В результате вы получите среднее количество AI-данных, записанных во время часового периода.
Метка:After-Imaging