Устранение неполадок асинхронных материализованных представлений
В этой теме описывается, как исследовать ваши асинхронные материализованные представления и решать проблемы, с которыми вы столкнулись при работе с ними.
ВНИМАНИЕ
Некоторые из функций, показанных ниже, поддерживаются только начина я с Selena v1.5.2.
Исследование асинхронного материализованного представления
Чтобы получить полную картину асинхронных материализованных представлений, с которыми вы работаете, вы можете сначала проверить их рабочее состояние, историю обновлений и потребление ресурсов.
Проверка рабочего состояния асинхронного материализованного представления
Вы можете проверить рабочее состояние асинхронного материализованного представления с помощью SHOW MATERIALIZED VIEWS. Среди всей возвращаемой информации вы можете сосредоточиться на следующих полях:
is_active: Активно ли состояние материализованного представления. Только активное материализованное представление может использоваться для ускорения запросов и перезаписи.last_refresh_state: Состояние последнего обновления, включая PENDING, RUNNING, FAILED и SUCCESS.last_refresh_error_message: Причина неудачи последнего обновления (если состояние материализованного представления неактивно).rows: Количество строк данных в материализованном представлении. Обратите внимание, что это значение может отличаться от фактического количества строк материализованного представления, поскольку обновления могут быть отложены.
Подробную информацию о других возвращаемых полях см. в SHOW MATERIALIZED VIEWS - Returns.
Пример:
MySQL > SHOW MATERIALIZED VIEWS LIKE 'mv_pred_2'\G
***************************[ 1. row ]***************************
id | 112517
database_name | ssb_1g
name | mv_pred_2
refresh_type | ASYNC
is_active | true
inactive_reason | <null>
partition_type | UNPARTITIONED
task_id | 457930
task_name | mv-112517
last_refresh_start_time | 2023-08-04 16:46:50
last_refresh_finished_time | 2023-08-04 16:46:54
last_refresh_duration | 3.996
last_refresh_state | SUCCESS
last_refresh_force_refresh | false
last_refresh_start_partition |
last_refresh_end_partition |
last_refresh_base_refresh_partitions | {}
last_refresh_mv_refresh_partitions |
last_refresh_error_code | 0
last_refresh_error_message |
rows | 0
text | CREATE MATERIALIZED VIEW `mv_pred_2` (`lo_quantity`, `lo_revenue`, `sum`)
DISTRIBUTED BY HASH(`lo_quantity`, `lo_revenue`) BUCKETS 2
REFRESH ASYNC
PROPERTIES (
"replication_num" = "3",
"storage_medium" = "HDD"
)
AS SELECT `lineorder`.`lo_quantity`, `lineorder`.`lo_revenue`, sum(`lineorder`.`lo_tax`) AS `sum`
FROM `ssb_1g`.`lineorder`
WHERE `lineorder`.`lo_linenumber` = 1
GROUP BY 1, 2;
1 row in set
Time: 0.003s
Просмотр истории обновлений асинхронного материализованного представления
Вы можете просмотреть историю обновлений асинхронного материализованного представления, запросив таблицу task_runs в базе данных information_schema. Среди всей возвращаемой информации вы можете сосредоточиться на следующих полях:
CREATE_TIMEиFINISH_TIME: Время начала и окончания задачи обновления.STATE: Состояние задачи обновления, включая PENDING, RUNNING, FAILED и SUCCESS.ERROR_MESSAGE: Причина неудачи задачи обновления.
Пример:
MySQL > SELECT * FROM information_schema.task_runs WHERE task_name ='mv-112517' \G
***************************[ 1. row ]***************************
QUERY_ID | 7434cee5-32a3-11ee-b73a-8e20563011de
TASK_NAME | mv-112517
CREATE_TIME | 2023-08-04 16:46:50
FINISH_TIME | 2023-08-04 16:46:54
STATE | SUCCESS
DATABASE | ssb_1g
EXPIRE_TIME | 2023-08-05 16:46:50
ERROR_CODE | 0
ERROR_MESSAGE | <null>
PROGRESS | 100%
EXTRA_MESSAGE | {"forceRefresh":false,"mvPartitionsToRefresh":[],"refBasePartitionsToRefreshMap":{},"basePartitionsToRefreshMap":{}}
PROPERTIES | {"FORCE":"false"}
***************************[ 2. row ]***************************
QUERY_ID | 72dd2f16-32a3-11ee-b73a-8e20563011de
TASK_NAME | mv-112517
CREATE_TIME | 2023-08-04 16:46:48
FINISH_TIME | 2023-08-04 16:46:53
STATE | SUCCESS
DATABASE | ssb_1g
EXPIRE_TIME | 2023-08-05 16:46:48
ERROR_CODE | 0
ERROR_MESSAGE | <null>
PROGRESS | 100%
EXTRA_MESSAGE | {"forceRefresh":true,"mvPartitionsToRefresh":["mv_pred_2"],"refBasePartitionsToRefreshMap":{},"basePartitionsToRefreshMap":{"lineorder":["lineorder"]}}
PROPERTIES | {"FORCE":"true"}
Мониторинг потребления ресурсов асинхронного материализованного представления
Вы можете отслеживать и анализировать ресурсы, потребляемые асинхронным материализованным представлением во время и после обновления.
Мониторинг потребления ресурсов во время обновления
Во время выполнения задачи обновления вы можете отслеживать её потребление ресурсов в реальном времени с помощью SHOW PROC '/current_queries'.
Среди всей возвращаемой информации вы можете сосредоточиться на следующих полях:
ScanBytes: Размер сканируемых данных.ScanRows: Количество сканируемых строк данных.MemoryUsage: Размер используемой памяти.CPUTime: Время использования CPU.ExecTime: Время выполнения запроса.
Пример:
MySQL > SHOW PROC '/current_queries'\G
***************************[ 1. row ]***************************
StartTime | 2023-08-04 17:01:30
QueryId | 806eed7d-32a5-11ee-b73a-8e20563011de
ConnectionId | 0
Database | ssb_1g
User | root
ScanBytes | 70.981 MB
ScanRows | 6001215 rows
MemoryUsage | 73.748 MB
DiskSpillSize | 0.000
CPUTime | 2.515 s
ExecTime | 2.583 s