-- 챌린지: 실제 데이터베이스 및 테이블 이름으로 대체하여 프로덕션 환경에서 사용하십시오
-- 실험: 시스템 환경에 맞게 파트 수 임계값(1000, 500, 100)을 조정하십시오
SELECT
database,
table,
count() as total_parts,
sum(rows) as total_rows,
round(avg(rows), 0) as avg_rows_per_part,
min(rows) as min_rows_per_part,
max(rows) as max_rows_per_part,
round(sum(bytes_on_disk) / 1024 / 1024, 2) as total_size_mb,
CASE
WHEN count() > 1000 THEN 'CRITICAL - Too many parts (>1000)'
WHEN count() > 500 THEN 'WARNING - Many parts (>500)'
WHEN count() > 100 THEN 'CAUTION - Getting many parts (>100)'
ELSE 'OK - Reasonable part count'
END as parts_assessment,
CASE
WHEN avg(rows) < 1000 THEN 'POOR - Very small parts'
WHEN avg(rows) < 10000 THEN 'FAIR - Small parts'
WHEN avg(rows) < 100000 THEN 'GOOD - Medium parts'
ELSE 'EXCELLENT - Large parts'
END as part_size_assessment
FROM system.parts
WHERE active = 1
AND database NOT IN ('system', 'information_schema')
GROUP BY database, table
ORDER BY total_parts DESC
LIMIT 20;