1. Information Schema 개요
메타 정보(테이블, 루틴, 예약, 작업, 스트리밍 데이터에 대한 메타작업)를 모아둔 뷰입니다.
쿼리는 표준 SQL 구문이어야 하고, DDL 문에서는 사용할 수 없다는 특징을 가지고 있습니다.
테이블이 생성된 시간, 가장 많이 업데이트되는 테이블등의 세부 정보, 또 한 문제를 일으키는 쿼리를 식별하고 평균 쿼리 시간도 Information Schema를 통해서확인할 수 있습니다. Information Schema 종류 및 필요한 정보를 어떻게 얻고, 활용하는지 알아보도록 하겠습니다.
2. Information Schema 종류
3. Information Schema 기본 사용 방법(예제)
① 단일 데이터세트에서 만들어진 모든 테이블에 대한 모든 세부 정보 찾기
SELECT *
FROM `MyDatabase`.INFORMATION_SCHEMA.TABLES;
② 발생 횟수와 함께 모든 열 이름 표시
SELECT
column_name,
COUNT(table_name) as No_times_occ
FROM`MyDatabase`.INFORMATION_SCHEMA.COLUMN;
③ 특정 데이터 유형의 열에 대한 테이블 경로 얻기
SELECT
CONCAT(table_catalog,".",table_schema,".",table_name) AS table_path, table_name, column_name,data_type
FROM`MyDatabase`.INFORMATION_SCHEMA.COLUMNS`
WHERE 데이터 유형 = 'INT64'
4. 분당 총 슬롯 사용량 확인
SELECT
res.period_start,
SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
ANY_VALUE(res.slots_assigned) AS slot_assigned,
ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned
FROM
`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
`region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE_BY_PROJECT res
ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start AND jobs.reservation_id = res.reservation_id
WHERE jobs.job_creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY) AND CURRENT_TIMESTAMP()
GROUP BY period_start
ORDER BY period_start DESC