구체화된 뷰 모니터링
BigQuery INFORMATION_SCHEMA
뷰를 확인하여 구체화된 뷰 사용량 및 새로고침 작업을 모니터링할 수 있습니다. 구체화된 뷰 목록을 만들려면 구체화된 뷰 나열을 참조하세요.
구체화된 뷰 INFORMATION_SCHEMA
뷰
구체화된 뷰를 검색하려면 INFORMATION_SCHEMA.TABLES
뷰를 쿼리합니다. 구체화된 뷰의 속성을 검색하려면 INFORMATION_SCHEMA.TABLE_OPTIONS
뷰를 쿼리합니다.
구체화된 뷰는 INFORMATION_SCHEMA.VIEWS
뷰 테이블에 나열되지 않습니다.
자동 새로고침 모니터링
이 섹션에서는 구체화된 뷰의 새로고침 세부정보를 보는 방법을 보여줍니다.
마지막 새로고침 상태 보기
구체화된 뷰의 현재 상태를 검색하려면 tables.get
메서드를 호출하거나 INFORMATION_SCHEMA.MATERIALIZED_VIEWS
뷰를 쿼리합니다.
예를 들면 다음과 같습니다.
SELECT table_name, last_refresh_time, refresh_watermark, last_refresh_status FROM `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
last_refresh_status
값이 NULL
이 아니면 마지막 자동 새로고침 작업이 실패한 것입니다. 수동 새로고침 요청은 여기에 반영되지 않습니다. 기본 테이블을 변경하면 구체화된 뷰 정의가 무효화되어 자동 새로고침 중에 오류가 발생할 수 있습니다. 자세한 내용은 증분 업데이트를 참조하세요. 예를 들어 구체화된 뷰에서 참조하는 열이 기본 테이블에서 삭제되면 last_refresh_status
필드가 invalidQuery
오류를 반환합니다. 자세한 내용은 오류 메시지를 참조하세요.
자동 새로고침 작업 나열
구체화된 뷰 자동 새로고침 작업을 나열하려면 jobs.list
메서드를 호출합니다. 작업에 대한 세부정보를 검색하려면 jobs.get
메서드를 호출합니다. 또한 INFORMATION_SCHEMA.JOBS_BY_*
뷰를 쿼리하여 작업을 가져올 수 있습니다. 자동 새로고침 작업에는 작업 ID 내의 materialized_view_refresh
프리픽스가 포함되며, BigQuery 관리자 계정으로 시작됩니다.
예를 들면 다음과 같습니다.
SELECT job_id, total_slot_ms, total_bytes_processed, materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason AS full_refresh_reason FROM `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT` WHERE job_id LIKE '%materialized_view_refresh_%' LIMIT 10;
새로고침 작업 비용을 모니터링하고 필요한 경우 자동 새로고침 간격을 조정하려면 total_bytes_processed
및 total_slot_ms
필드를 확인하세요.
예를 들어 기본 테이블의 수집 간격이 비교적 작으면 뷰를 덜 빈번하게 새로고침하는 것이 좋습니다. 기본 데이터가 빠르게 변경될 때는 더 자주 새로고침하는 것이 좋습니다.
기본 테이블이 야간 추출, 변환, 로드(ETL) 파이프라인 사용과 같이 사전 정의된 시점에 데이터를 수집하는 경우 다음과 같이 구체화된 뷰 유지보수 일정을 제어해야 합니다.
ETL 파이프라인의 일환으로 수동으로 새로고침을 수행하거나 하루 중 특정 시간에 예약된 쿼리를 구성합니다.
구체화된 뷰 가격 책정에 대한 자세한 내용은 구체화된 뷰 가격 책정을 참조하세요.
구체화된 뷰 사용량 모니터링
쿼리 작업의 구체화된 뷰 사용을 보려면 jobs.get
메서드를 호출하거나 INFORMATION_SCHEMA.JOBS_BY_*
뷰를 쿼리하고 materialized_view_statistics
필드를 확인합니다. 다음 세부정보를 포함하여 쿼리에서 구체화된 뷰 사용에 대한 세부정보를 제공합니다.
- 구체화된 뷰가 사용되었는지 여부
- 구체화된 뷰가 사용되지 않은 경우 거부된 이유
예를 들면 다음과 같습니다.
SELECT job_id, materialized_view_statistics FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE job_id = '<my-query-job-id>';
시간 경과에 따른 구체화된 뷰의 사용량을 보려면 INFORMATION_SCHEMA.JOBS_BY_*
뷰를 쿼리합니다.
예를 들어 다음 쿼리는 대상 구체화된 뷰를 사용하는 최근 쿼리 작업의 요약을 반환합니다.
SELECT mv.table_reference.dataset_id, mv.table_reference.table_id, MAX(job.creation_time) latest_job_time, COUNT(job_id) job_count FROM region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job, UNNEST(materialized_view_statistics.materialized_view) mv WHERE job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY) AND mv.table_reference.dataset_id = 'my_dataset' AND mv.table_reference.table_id = 'my_materialized_view' AND mv.chosen = TRUE GROUP BY 1, 2;
구체화된 뷰로 느린 쿼리 문제 해결
쿼리에서 구체화된 뷰를 사용하고 예상보다 느리게 실행되는 경우 다음을 수행합니다.
- 의도한 구체화된 뷰가 쿼리에서 실제로 사용되고 있는지 확인합니다. 자세한 안내는 구체화된 뷰 사용량 모니터링을 참조하세요.
- 구체화된 뷰의 최신 상태를 확인합니다.
- 구체화된 뷰 정의 및 참조하는 데이터를 검토하고 구체화된 뷰 사용량을 최적화하는 기법을 고려합니다.