Дамп и загрузка содержимого менеджера кэша дисковых блоков UMCA
Экземпляр QHB может работать достаточно долгое время. В процессе он накапливает данные о загруженных дисковых блоках. Если по каким-то причинам появится необходимость остановить его работу, то эти данные будут потеряны. В этом случае после запуска новому экземпляру придется заново собирать эти данные.
Модуль UMCA (Universal Memory Cache Analyzer, универсальный анализатор кэш-памяти) позволяет сохранять содержимое менеджера кэша дисковых блоков в файловой системе, а затем загружать его обратно, тем самым восстанавливая прежнее состояние. За счет этого время на прогрев экземпляра не затрачивается. (Подробное описание менеджера кэша дисковых блоков см. в разделе Менеджер кэша дисковых блоков TARQ)
ВНИМАНИЕ!
Функции UMCA работают, только если в конфигурационном файле qhb.conf параметр use_qhb_cache установлен в значение true, иначе вызовы функций будут завершаться ошибкой.
Создание дампа
Для создания дампов используется встроенная SQL-функция qhb_dump_disk_cache. Она копирует содержимое менеджера кэша дисковых блоков и затем сохраняет его в файле. В качестве результата возвращается количество сохраненных блоков. При вызове необходимо указать тип дампа (регистр символов не имеет значения). Ниже представлена соотносительная таблица всех типов дампов и затрагиваемых списков страниц.
Тип дампа | Затрагиваемые списки |
---|---|
FULL | B1, B2, L1, L2 |
HOT | L2 |
COLD | L1 |
SHADOW | B1, B2 |
Ниже приведен пример вызова функции qhb_dump_disk_cache, в результате которого создается полный дамп содержимого менеджера кэша дисковых блоков. Если ошибок нет, значит, функция выполнилась успешно.
SELECT qhb_dump_disk_cache('FULL');
Все дампы сохраняются в подкаталоге qhb-disk-cache-dump каталога базы данных. Файл имеет имя, состоящее из типа дампа (см. таблицу выше) и текущего UTC-времени.
Сохранение дампа в файл с произвольным именем
Функция qhb_dump_disk_cache имеет форму со вторым параметром, позволяющим дополнительно передать имя файла, под которым будет сохранен создаваемый дамп. Ниже приведен пример вызова функции qhb_dump_disk_cache, в результате которого будет создан дамп горячих блоков с именем test.dump.
SELECT qhb_dump_disk_cache('HOT','old.dump');
Загрузка дампа
Для загрузки из дампов используется встроенная SQL-функция qhb_load_disk_cache. Она загружает данные из предварительно созданного дампа. В качестве результата возвращается количество загруженных блоков. При вызове необходимо указать название или абсолютный путь к дампу. Ниже приведен пример вызова функции qhb_load_disk_cache, в результате выполнения которого будут загружены блоки. Если ошибок нет, значит, функция выполнилась успешно.
SELECT qhb_load_disk_cache('2020-12-03_12:50:21.dump');
В примере выше указано название дампа, поэтому функция будет искать его в стандартном подкаталоге хранения дампов менеджера кэша дисковых блоков. Также можно указать полный путь к дампу, как это сделано в примере ниже.
SELECT qhb_load_disk_cache('/opt/qhb-data/qhb-disk-cache-dumps/2020-12-03_12:50:21.dump');
Загрузка последнего дампа
Функция qhb_load_disk_cache имеет форму без параметров; в этом случае функция будет искать последний измененный файл, доступный для чтения. Ниже приведен пример вызова функции qhb_load_disk_cache без параметров.
SELECT qhb_load_disk_cache();
Если в каталоге есть несколько дампов, с помощью команды touch
можно обновить
время изменения дампа, тогда он будет считаться последним.
touch new-last.dump
Просмотр файлов дампа
Дистрибутив QHB содержит утилиту qhb_disk_cache_dump_viewer, которая позволяет посмотреть содержимое дампов менеджера кэша дисковых блоков. Ниже приведен пример использования этой утилиты.
qhb_disk_cache_dump_viewer 2020-12-03_15:34:53.dump
Сортировка вывода
Утилита qhb_disk_cache_dump_viewer имеет параметр сортировки вывода --sort-by (сокращенно -s). По умолчанию включена сортировка по номеру блока. С помощью значений, описанных в таблице ниже, можно указать, по какому столбцу сортировать вывод.
Значение параметра --sort-by | Описание |
---|---|
ForkNum | сортирует вывод по столбцу fork_num |
BlockNum | сортирует вывод по столбцу block_num |
SpcNode | сортирует вывод по столбцу spc_node |
DbNode | сортирует вывод по столбцу db_node |
RelNode | сортирует вывод по столбцу rel_node |
Ниже приведен пример вывода утилиты qhb_disk_cache_dump_viewer.
GEN ID: [ fork_num | block_num | spc_node | db_node | rel_node ]
L1 1: [ 0 | 0 | 1663 | 12674 | 2615 ]
L1 2: [ 0 | 5 | 1663 | 12674 | 2617 ]
L1 3: [ 0 | 1 | 1663 | 12674 | 2654 ]
L1 129: [ 2 | 0 | 1663 | 12674 | 3456 ]
L1 130: [ 0 | 42 | 1663 | 12674 | 2838 ]
L1 257: [ 0 | 1 | 1663 | 12674 | 1259 ]
L1 258: [ 0 | 2 | 1663 | 12674 | 2610 ]
L1 259: [ 0 | 3 | 1663 | 12674 | 2696 ]
Получение размера дампа в блоках
Утилита qhb_disk_cache_dump_viewer имеет параметр отображения размера дампа в блоках --size (сокращенно -S). Этот параметр несовместим с параметром --sort-by.
Ниже приведен пример вывода qhb_disk_cache_dump_viewer с параметром --size.
B1: 0
B2: 0
L1: 159
L2: 0
Total: 159