Оценка дискового пространства для AI-экстентов
Перед активацией функции After-imaging необходимо провести тщательную оценку необходимого дискового пространства для хранения всех AI-экстентов базы данных. В случае, если при использовании экстентов переменного размера произойдет исчерпание дискового пространства и не будет доступен пустой экстент (статус EMPTY), база данных будет принудительно остановлена. Для предотвращения данной ситуации рекомендуется использовать параметр старта при запуске базы данных, который приостановит пользовательскую активность и зафиксирует информацию о недостатке места в лог-файле базы данных. Дальнейшие действия по восстановлению работоспособности базы данных возлагаются на администратора.
Для определения объема генерируемых данных After-imaging существует несколько подходов. Один из них заключается в сборе статистических данных за короткий промежуток времени, например, каждые 5 минут в течение нескольких дней или месяцев. Это позволяет получить среднее максимальное значение объема данных.
Методы оценки объема данных After-imaging включают:
- Анализ информации по After-imaging из VST.
- Анализ данных Before-image из VST.
- Использование утилиты RFUTIL.
- Использование утилиты PROMON.
Следует отметить, что все перечисленные методы не учитывают пиковые нагрузки, возникающие в процессе работы системы. Поэтому результаты расчетов носят приблизительный характер и требуют корректировки в зависимости от конкретных условий эксплуатации базы данных.
Анализ информации по After-imaging из VST
В условиях активированного механизма After-imaging для повышения его эффективности предлагается использование виртуальных таблиц. Для доступа к данным, связанным с After-imaging, необходимо обратиться к таблице _ActAILog, где поля _AiLog-TotWrites и _AiLog-BytesWritn содержат информацию о количестве и объеме записанных AI-блоков соответственно.
Поле _AiLog-TotWrites фиксирует данные в блоках. Разность значений этого поля в начале и конце рассматриваемого периода позволяет определить количество записанных AI-блоков за указанный промежуток времени. Умножение количества AI-блоков на размер одного блока позволяет вычислить общий объем сгенерированных данных.
Данный метод обладает рядом преимуществ по сравнению с альтернативными подходами. Во-первых, он отличается высокой гибкостью и простотой реализации. Во-вторых, использование виртуальных таблиц не оказывает негативного влияния на производительность системы, что является важным фактором при оптимизации работы механизмов обработки данных.
Использования 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 из VST
Для определения количества записанных AI-блоков в данном методе используется информация из виртуальных таблиц, связанных с Before-Image. В частности, применяется таблица _ActBILog с полями _BiLog-TotalWrts и _BiLog-BytesWrtn. Поле _BiLog-TotalWrts представляет собой сумму BI-блоков, записанных в журнал BI. Размер BI-блока может быть использован для вычисления объема сгенерированных данных.
Важно отметить, что размер BI-блока должен быть идентичен размеру AI-блока. Для расчета количества AI-блоков за определенный период необходимо зафиксировать значения начала и конца этого периода. Разность между этими значениями даст количество записанных AI-блоков.
Если механизм After-imaging еще не активирован, данный метод является единственным доступным для оценки предполагаемого объема AI-данных.
Использования 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.
Использование утилиты 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). Откроется окно, представленное на рисунке
Обратите внимание на выделенное значение строки «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-данных, записанных во время часового периода.