<@U0A71G31CDV> Starrocks internal catalog에 데이터 쌓고있...
# questions-and-troubleshooting
s
@Rocky Starrocks internal catalog에 데이터 쌓고있는데, 조회가 느린데 어떻게해?
r
StarRocks 내장(Internal) 카탈로그를 사용 중인데 조회가 느리다면, 테이블 설계 단계에서의 데이터 레이아웃 최적화와 쿼리 분석을 통해 해결할 수 있습니다. 다음은 성능 개선을 위해 확인해야 할 주요 체크리스트입니다. 1. 쿼리 실행 계획 및 프로파일링 확인 먼저 왜 느린지 정확한 원인을 파악하는 것이 중요합니다. * EXPLAIN: 쿼리 앞에 `EXPLAIN`을 붙여 실행 계획을 확인하세요. `PARTITION ITERATORS`나 `TABLET ITERATORS`의 숫자가 너무 크지 않은지, 인덱스가 잘 타는지 확인합니다. * Query Profile: 실제 실행 시 어디서 병목이 생기는지 확인합니다.
Copy code
sql
    SET enable_profile = true;
    -- 쿼리 실행 후
    SHOW PROFILELIST;
    ANALYZE PROFILE FROM 'query_id';
2. 데이터 분포 최적화 (Partitioning & Bucketing) 데이터가 적절히 분산되어 있지 않으면 특정 노드에 부하가 쏠리거나 불필요한 데이터를 너무 많이 스캔하게 됩니다. * Partitioning (파티셔닝): 주로 날짜(
DATE
,
DATETIME
) 컬럼을 기준으로 `PARTITION BY RANGE`를 사용합니다. 쿼리 조건에 파티션 컬럼을 포함하면 불필요한 파티션을 읽지 않아(Partition Pruning) 성능이 급격히 향상됩니다. * Bucketing (버케팅):
DISTRIBUTED BY HASH(column)
설정 시, 고카디날리티(중복도가 낮은) 컬럼(예: ID, 사용자 번호)을 선택하세요. * 버킷당 데이터 크기는 약 1GB ~ 10GB 내외가 적당합니다. * 자주 조인하거나 필터링하는 컬럼을 버케팅 키로 쓰면 성능에 유리합니다. 3. 정렬 키(Sort Key) 설정 StarRocks는 테이블 생성 시 지정한 *Key 컬럼들*을 기준으로 데이터를 정렬해 저장합니다. *
DUPLICATE KEY
,
PRIMARY KEY
등에 지정된 컬럼 순서대로 데이터가 정렬됩니다. * *자주 필터링(WHERE 절)에 사용하는 컬럼*을 앞 순서에 배치하세요. 이를 통해 Prefix Index와 Zone Map(Min/Max 필터링)을 효과적으로 활용할 수 있습니다. 4. 인덱스 활용 정렬 키만으로 부족할 경우 추가 인덱스를 생성합니다. * Bitmap Index: 카디날리티가 낮은(중복이 많은, 예: 성별, 상태값) 컬럼의 등호(=) 연산에 효과적입니다. * Bloom Filter Index: 카디날리티가 높은 컬럼의 등호(=)나
IN
연산에 효과적입니다. 5. 통계 정보 최적화 옵티마이저가 최적의 실행 계획을 세우려면 최신 통계 정보가 필요합니다.
Copy code
sql
ANALYZE TABLE <table_name>; -- 수동 통계 수집
6. 구체화된 뷰 (Materialized View) 쿼리 패턴이 특정 집계(SUM, COUNT 등)나 조인을 반복한다면, *Materialized View*를 생성하여 미리 계산해 두는 것이 좋습니다. StarRocks의 MV는 쿼리 재작성(Query Rewrite)을 통해 사용자가 직접 MV를 조회하지 않아도 원본 테이블 조회 시 자동으로 최적화된 MV를 참조합니다. 7. 데이터 타입 최적화 * 가능한 한 가장 작은 데이터 타입을 사용하세요. (예:
BIGINT
대신
INT
,
STRING
대신
VARCHAR
등) *
STRING
타입보다는 길이가 고정된 `CHAR`나 제한된 `VARCHAR`가 성능상 유리할 수 있습니다. 요약하자면: 먼저 `ANALYZE PROFILE`로 스캔량이 많은지, 조인 비용이 큰지 확인하신 후, *파티션/버킷 설계*와 *정렬 키 순서*를 다시 점검해 보시는 것을 권장합니다. 추가로 구체적인 테이블 스키마와 쿼리를 공유해 주시면 더 정확한 가이드를 드릴 수 있습니다. Referencesbest_practices/bucketing.mdbest_practices/table_clustering.mdtable_design/data_distribution/Data_distribution.md