중요
이 시스템 테이블은 공개 프리뷰 상태에있습니다.
참고
이 테이블에 액세스하려면 해당 지역에서 예측 최적화를 지원해야 합니다. Azure Databricks 지역을 참조하세요.
이 문서에서는 예측 최적화 작업 기록 테이블 스키마를 간략하게 설명하고 샘플 쿼리를 제공합니다. 예측 최적화는 최고 성능 및 비용 효율성을 위해 데이터 레이아웃을 최적화합니다. 시스템 테이블은 이 기능의 작업 기록을 추적합니다. 예측 최적화에 대한 자세한 내용은 Unity 카탈로그 관리 테이블에 대한 예측 최적화를 참조 하세요.
테이블 경로: 이 시스템 테이블은 system.storage.predictive_optimization_operations_history에 위치해 있습니다.
배달 고려 사항
- 예측 최적화 시스템 테이블은 2시간 이내에 업데이트됩니다. 그러나 청구 정보는 데이터를 채우는 데 최대 24시간이 걸릴 수 있습니다.
- 예측 최적화는 동일한 클러스터에서 여러 작업을 실행할 수 있습니다. 이 경우 각 다중 작업에 기인하는 DBU의 지분은 근사치로 나타납니다. 이 때문에
usage_unit가ESTIMATED_DBU로 설정됩니다. 그럼에도 불구하고 클러스터에 소요된 총 DBU 수는 정확할 것입니다.
예측 최적화 테이블 스키마
예측 최적화 작업 기록 시스템 테이블은 다음 스키마를 사용합니다.
| 열 이름 | 데이터 형식 | 설명 | 예시 |
|---|---|---|---|
account_id |
문자열 | 계정의 ID. | 11e22ba4-87b9-4cc2-9770-d10b894b7118 |
workspace_id |
문자열 | 예측 최적화가 작업을 실행한 작업 영역의 ID입니다. | 1234567890123456 |
start_time |
시간표시 | 작업이 시작된 시간입니다. 표준 시간대 정보는 UTC를 나타내는 +00:00 사용하여 값의 끝에 기록됩니다. |
2023-01-09 10:00:00.000+00:00 |
end_time |
시간표시 | 작업이 종료된 시간입니다. 표준 시간대 정보는 UTC를 나타내는 +00:00 사용하여 값의 끝에 기록됩니다. |
2023-01-09 11:00:00.000+00:00 |
metastore_name |
문자열 | 최적화된 테이블이 속한 메타스토어의 이름입니다. | metastore |
metastore_id |
문자열 | 최적화된 테이블이 속한 메타스토어의 ID입니다. | 5a31ba44-bbf4-4174-bf33-e1fa078e6765 |
catalog_name |
문자열 | 최적화된 테이블이 속한 카탈로그의 이름입니다. | catalog |
schema_name |
문자열 | 최적화된 테이블이 속한 스키마의 이름입니다. | schema |
table_id |
문자열 | 최적화된 테이블의 ID입니다. | 138ebb4b-3757-41bb-9e18-52b38d3d2836 |
table_name |
문자열 | 최적화된 테이블의 이름입니다. | table1 |
operation_type |
문자열 | 수행된 최적화 작업입니다. 다음 값 COMPACTIONVACUUMANALYZECLUSTERINGAUTO_CLUSTERING_COLUMN_SELECTIONDATA_SKIPPING_COLUMN_SELECTIONCOMPATIBILITY_MODE_REFRESH중 하나여야 합니다. |
COMPACTION |
operation_id |
문자열 | 최적화 작업의 ID입니다. | 4dad1136-6a8f-418f-8234-6855cfaff18f |
operation_status |
문자열 | 최적화 작업의 상태입니다. 다음 값 SUCCESSFUL 중 하나여야 합니다. 또는 FAILED: INTERNAL_ERROR. |
SUCCESSFUL |
operation_metrics |
map[string, string] | 수행된 특정 최적화에 대한 추가 세부 정보입니다. 작업 메트릭을 참조 하세요. | {"number_of_output_files":"100","number_of_compacted_files":"1000","amount_of_output_data_bytes":"4000","amount_of_data_compacted_bytes":"10000"} |
usage_unit |
문자열 | 이 작업으로 발생한 사용의 단위입니다. 다음 값 ESTIMATED_DBU이어야 합니다. |
ESTIMATED_DBU |
usage_quantity |
소수 | 이 작업에서 사용한 사용 단위의 양입니다. | 2.12 |
작업 메트릭
열에 operation_metrics 기록된 메트릭은 작업 유형에 따라 달라집니다.
| 작업 이름 | 작업 설명 | 작업 메트릭 | 설명 |
|---|---|---|---|
COMPACTION |
파일 크기를 최적화하여 쿼리 성능을 향상시킵니다. 데이터 파일 레이아웃 최적화를 참조하세요. | number_of_compacted_files |
이 작업으로 제거된 파일 수입니다. |
amount_of_data_compacted_bytes |
이 작업에서 제거된 바이트 양입니다. | ||
number_of_output_files |
이 작업에서 추가한 새 파일의 수입니다. | ||
amount_of_output_data_bytes |
이 작업에서 추가한 바이트 양입니다. | ||
VACUUM |
테이블에서 더 이상 참조하지 않는 데이터 파일을 삭제하여 스토리지 비용을 줄입니다. 진공사용하여 사용하지 않는 데이터 파일 제거를 참조하세요. | number_of_deleted_files |
이 작업으로 삭제 처리된 파일 수입니다. |
amount_of_data_deleted_bytes |
이 작업에서 가비지 수집된 바이트의 양입니다. | ||
ANALYZE |
통계의 증분 업데이트를 트리거하여 쿼리 성능을 향상시킵니다. ANALYZE TABLE을(를) 참조하세요. | amount_of_scanned_bytes |
이 작업에서 스캔한 바이트 양입니다. |
number_of_scanned_files |
이 작업에서 검색한 파일 수입니다. | ||
staleness_percentage_reduced |
이 작업 후 부실 비율 감소 이 통계는 실행되는 빈도 ANALYZE 에 따라 0에서 100 사이의 범위를 지정할 수 있습니다. |
||
CLUSTERING |
활성화된 테이블에 대한 단계적 클러스터링을 트리거합니다. 테이블에 대한 액체 클러스터링 사용을 참조하세요. | number_of_removed_files |
이 작업으로 제거된 파일 수입니다. |
number_of_clustered_files |
이 작업에서 추가한 새 파일의 수입니다. | ||
amount_of_data_removed_bytes |
이 작업에서 제거된 바이트 양입니다. | ||
amount_of_clustered_data_bytes |
이 작업에서 추가한 바이트 양입니다. | ||
AUTO_CLUSTERING_COLUMN_SELECTION |
클러스터링 열을 진화시킬지 여부를 평가합니다. 자동 액체 클러스터링을 참조하세요. | old_clustering_columns |
이전 데이터 레이아웃- 이전 클러스터링 키이거나 분할되지 않은 경우 "없음"일 수 있습니다. |
new_clustering_columns |
이 작업에 의해 적용된 새 클러스터링 열입니다. | ||
has_column_selection_changed |
이 작업이 클러스터링 열을 변화시켰는지 여부입니다. | ||
additional_reason |
클러스터링 열이 변경되거나 변경되지 않는 이유입니다. | ||
DATA_SKIPPING_COLUMN_SELECTION |
워크로드의 통계는 무시하고 누락된 데이터를 포함한 열을 감지하여 데이터를 보충합니다. 데이터 건너뛰기 참조 | amount_of_scanned_bytes |
이 작업에서 스캔한 바이트 양입니다. |
number_of_scanned_files |
이 작업에서 검색한 파일 수입니다. | ||
added_data_skipping_columns |
이 작업에 의해 적용된 데이터 건너뛰기 열이 새로 추가되었습니다. | ||
removed_data_skipping_columns |
이 작업으로 제거된 열을 건너뛰는 데이터입니다. | ||
old_data_skipping_columns |
데이터 건너뛰기 열의 이전 전체 목록입니다. | ||
new_data_skipping_columns |
열을 건너뛰는 데이터의 현재 전체 목록입니다. | ||
COMPATIBILITY_MODE_REFRESH |
호환 모드가 만료되었는지 여부를 감지하고 테이블을 새로 고칩니다. 호환 모드를 참조하세요. | N/A | 호환성 모드 새로 고침 작업. |
예제 쿼리
다음 섹션에는 예측 최적화 시스템 테이블에 대한 인사이트를 얻는 데 사용할 수 있는 샘플 쿼리가 포함되어 있습니다. 이러한 쿼리가 작동하려면 매개 변수 값을 사용자 고유의 값으로 바꿔야 합니다.
이 문서에는 다음 예제 쿼리가 포함되어 있습니다.
- 지난 30일 동안 예측 최적화에서 사용된 예상 DBU 수는 몇 개입니까?
- 예측 최적화가 지난 30일 동안 가장 많이 소비한 테이블(예상 비용)은 어느 것인가요?
- 가장 많은 작업을 수행하는 예측 최적화 테이블은 무엇인가요?
- 지정된 카탈로그의 경우 압축된 총 바이트 수
- 가장 많은 바이트가 진공된 테이블은 무엇인가요?
- 예측 최적화를 통해 실행되는 작업의 성공률은 무엇인가요?
지난 30일 동안 사용된 예측 최적화의 예상 DBU 수는 몇 개입니까?
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
특정 ETL 파이프라인에 대해 동일한 값을 찾으려면 먼저 해당 파이프라인에서 테이블을 찾은 다음 DTU를 검색할 수 있습니다.
-- Find all full table names for the pipeline:
WITH pipeline_mapping AS (
SELECT DISTINCT target_table_full_name AS target_table_name
FROM system.access.table_lineage
WHERE entity_type = 'PIPELINE' AND entity_id = :pipeline_id
)
-- Select all operations for any table in that pipeline:
SELECT SUM(usage_quantity)
FROM system.storage.predictive_optimization_operations_history
WHERE
CONCAT_WS('.', catalog_name, schema_name, table_name)
IN ( SELECT target_table_name FROM pipeline_mapping)
AND usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30;
예측 최적화가 지난 30일 동안 가장 많이 지출한 테이블(예상 비용)은 어느 것인가요?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(usage_quantity) as totalDbus
FROM system.storage.predictive_optimization_operations_history
WHERE
usage_unit = "ESTIMATED_DBU"
AND timestampdiff(day, start_time, Now()) < 30
GROUP BY ALL
ORDER BY totalDbus DESC;
가장 많은 작업을 수행하는 예측 최적화 테이블은 무엇인가요?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
operation_type,
COUNT(DISTINCT operation_id) as operations
FROM system.storage.predictive_optimization_operations_history
GROUP BY ALL
ORDER BY operations DESC;
지정된 카탈로그의 경우 압축된 총 바이트 수
SELECT
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_compacted_bytes"]) as bytesCompacted
FROM system.storage.predictive_optimization_operations_history
WHERE
metastore_name = :metastore_name
AND catalog_name = :catalog_name
AND operation_type = "COMPACTION"
GROUP BY ALL
ORDER BY bytesCompacted DESC;
가장 많은 바이트가 진공된 테이블은 무엇인가요?
SELECT
metastore_name,
catalog_name,
schema_name,
table_name,
SUM(operation_metrics["amount_of_data_deleted_bytes"]) as bytesVacuumed
FROM system.storage.predictive_optimization_operations_history
WHERE operation_type = "VACUUM"
GROUP BY ALL
ORDER BY bytesVacuumed DESC;
예측 최적화를 통해 실행되는 작업의 성공률은 무엇인가요?
WITH operation_counts AS (
SELECT
COUNT(DISTINCT (CASE WHEN operation_status = "SUCCESSFUL" THEN operation_id END)) as successes,
COUNT(DISTINCT operation_id) as total_operations
FROM system.storage.predictive_optimization_operations_history
)
SELECT successes / total_operations as success_rate
FROM operation_counts;