<@U0A71G31CDV> Tablet개수에 관련한 정보를 줘
# questions-and-troubleshooting
s
@Rocky Tablet개수에 관련한 정보를 줘
r
StarRocks에서 태블릿(Tablet)은 데이터 배포의 기본 단위이며, 각 파티션은 하나 이상의 버킷(Bucket)으로 나뉘고 각 버킷이 물리적으로 하나의 태블릿이 됩니다. 태블릿 개수 관리와 관련된 주요 정보는 다음과 같습니다. 1. 태블릿 크기 권장 사항 태블릿의 개수는 각 태블릿에 담기는 데이터 크기를 기준으로 결정하는 것이 좋습니다. * 일반적인 권장 사항: 태블릿 하나당 약 *1GB ~ 10GB*의 원시 데이터(Raw Data)를 포함하도록 설정하는 것을 권장합니다. * 병렬 스캔 활용 (v2.4.0 이후):
enable_tablet_internal_parallel
파라미터가 `TRUE`인 경우, StarRocks는 태블릿 하나를 여러 스레드에서 병렬로 처리할 수 있습니다. 이 경우 태블릿당 약 10GB 정도로 크게 설정해도 성능 저하가 적으며 관리가 용이해집니다. * 주의사항: 태블릿 크기가 너무 작으면(예: 수십 MB 미만) 메타데이터 관리 오버헤드가 커지고, 너무 크면 데이터 복구(Restoration)나 밸런싱 작업 시간이 길어질 수 있습니다. 2. 버킷 수(태블릿 수) 설정 방법 테이블 생성 시
DISTRIBUTED BY HASH(...) BUCKETS <수>
구문을 통해 설정합니다. * 자동 버킷 설정 (Automatic Bucketing, v2.5.7 이후): 사용자가 개수를 지정하지 않아도 StarRocks가 클러스터 리소스와 데이터 양을 고려하여 최적의 개수를 자동으로 계산합니다. * BE 노드 수(X)에 따른 기본 계산 예시: * X <= 12: 2X * X <= 24: 1.5X * X > 36: min(X, 48) * 수동 설정: 데이터 양을 예측할 수 있다면
(예상 데이터 크기 / 권장 태블릿 크기)
공식으로 계산하여 입력합니다. 3. 태블릿 개수 확인 방법 현재 클러스터나 테이블의 태블릿 상태를 확인하려면 다음 SQL 명령어를 사용합니다. * 전체 데이터베이스별 통계 확인:
Copy code
sql
    SHOW PROC '/statistic';
(각 DB의
TabletNum
항목에서 총 태블릿 개수 확인 가능) * 특정 테이블의 파티션별 버킷(태블릿) 수 확인:
Copy code
sql
    SHOW PROC '/dbs/<db_id>/<table_id>/partitions';
    -- 또는 최신 버전(v3.1.9+)에서는 정보 스키마 활용
    SELECT DB_NAME, TABLE_NAME, PARTITION_NAME, BUCKETS
    FROM information_schema.partitions_meta;
* 개별 태블릿 상세 정보 확인:
Copy code
sql
    SHOW TABLETS FROM <table_name>;
4. 태블릿 개수와 성능 관계 * 조회 성능: 태블릿이 너무 적으면 쿼리의 병렬 처리 능력이 제한될 수 있고, 너무 많으면 개별 태블릿 조회 오버헤드가 발생합니다. * 쓰기 성능: 데이터 로드 시 태블릿마다 쓰기 스레드가 필요하므로, 태블릿 수가 너무 많으면 로드 시 부하가 커질 수 있습니다. * BE당 제한: BE 노드당 태블릿 개수에 대한 엄격한 제한은 없으나, 일반적으로 노드당 수만 개에서 수십만 개 수준으로 유지하는 것이 관리 효율 측면에서 좋습니다. 더 구체적으로 특정 테이블의 태블릿 설계에 대해 궁금한 점이 있으시면 알려주세요! References • sql-reference/sql-statements/cluster-management/nodes_processes/SHOW_PROC.md • knowledge/admin_and_operation/shared_data_compaction.md
s
@Rocky 개수 관련한 추천 설정은 없어??
r
StarRocks에서 태블릿(Tablet) 개수를 설정할 때 가장 권장되는 기준은 *"태블릿 하나의 크기"*와 *"클러스터 전체의 메타데이터 부하"*입니다. 구체적인 추천 설정값은 다음과 같습니다. 1. 태블릿 하나당 권장 크기 태블릿 개수를 정할 때 가장 먼저 고려해야 할 기준은 데이터 용량입니다. * 권장 크기: 태블릿 하나당 *1GB ~ 10GB (원시 데이터 기준)*를 권장합니다. * v2.4.0 이상: 태블릿 내부 병렬 스캔(
enable_tablet_internal_parallel=true
) 기능 덕분에, 태블릿 하나를 크게(약 10GB) 잡아도 쿼리 성능이 잘 나옵니다. 너무 잘게 쪼개는 것보다 적절히 크게 가져가는 것이 메타데이터 관리 측면에서 유리합니다. * 최소 크기: 최소 *100MB 이상*은 유지하는 것이 좋습니다. 수십 MB 단위의 너무 작은 태블릿이 많아지면 FE(Frontend)의 메모리 사용량이 급증하고 스케줄링 오버헤드가 발생합니다. 2. 자동 버킷 설정 (권장) 직접 개수를 계산하기 어렵다면 StarRocks v2.5.7부터 도입된 자동 버킷(Automatic Bucketing) 기능을 사용하는 것이 가장 좋습니다.
BUCKETS
수치를 생략하면 시스템이 BE 노드 수와 데이터 양을 고려해 최적의 개수를 할당합니다. * 초기 테이블 생성 시 계산 공식 (BE 노드 수 = X): * X <= 12: 2X 개 * X <= 24: 1.5X 개 * X > 36: min(X, 48) 개 * 이후 데이터가 늘어나면 이전 파티션의 데이터 양을 참고하여 새 파티션의 버킷 수를 자동으로 조절합니다. 3. 클러스터 전체 태블릿 개수와 FE 메모리 클러스터 전체의 태블릿 개수가 많아질수록 FE의 메모리 설정(JVM Heap)을 늘려야 합니다. * 100만 개 미만: FE 메모리 최소 16GB * 100만 ~ 200만 개: FE 메모리 32GB * 200만 ~ 500만 개: FE 메모리 64GB * 일반적으로 BE 노드당 수만 개 정도까지는 안정적으로 운영 가능하나, 수십만 개가 넘어가면 관리가 복잡해질 수 있습니다. 4. 설정 팁 요약 * 데이터가 적은 테이블: BE 노드 수와 동일하게 설정하거나 자동 설정을 맡기세요. * 데이터가 아주 많은 테이블: `(파티션당 예상 데이터 용량 / 10GB)`로 계산하여 버킷 수를 설정하세요. * 조인(Join) 최적화: Colocate Join을 사용해야 하는 경우, 조인할 테이블들의 버킷 개수를 반드시 동일하게 맞춰야 합니다. 결론적으로: 특별한 이유가 없다면 *자동 버킷 설정*을 사용하시고, 특정 파티션에 데이터가 너무 몰려 태블릿 크기가 10GB를 훨씬 초과하는 경우에만 수동으로 버킷 수를 늘려주는 방식을 추천합니다. References • table_design/data_distribution/Data_distribution.md • faq/Others.md • best_practices/bucketing.md References • best_practices/bucketing.md • knowledge/usage/best-practice.md • best_practices/query_tuning/schema_tuning.md • table_design/data_distribution/Data_distribution.md
s
@Rocky 테블릿 개수 쿼리
r
StarRocks에서 태블릿(Tablet) 개수를 확인하거나 집계할 때 사용할 수 있는 주요 쿼리와 명령어들입니다. 1. 테이블별 태블릿 개수 확인 특정 테이블에 속한 모든 태블릿 목록을 보여주며, 결과의 전체 로우(Row) 수가 곧 태블릿 개수입니다.
Copy code
sql
-- 특정 테이블의 모든 태블릿 목록 조회
SHOW TABLET FROM <table_name>;

-- 특정 파티션의 태블릿만 조회
SHOW TABLET FROM <table_name> PARTITION (<partition_name>);
2. 전체 DB별 태블릿 총합 확인 (가장 빠름) 클러스터 전체의 메타데이터 통계를 요약해서 보여줍니다.
TabletNum
컬럼에서 각 데이터베이스별 총 태블릿 개수를 확인할 수 있습니다.
Copy code
sql
SHOW PROC '/statistic';
3. BE(Worker) 노드별 태블릿 개수 확인 각 BE 노드에 분산되어 있는 태블릿의 개수를 확인하고 싶을 때 사용합니다.
Copy code
sql
-- 시스템 스키마를 이용한 BE별 태블릿 수 집계
SELECT BE_ID, COUNT(*) 
FROM information_schema.be_tablets 
GROUP BY BE_ID;
참고: 복제본(Replica)이 3개라면 하나의 태블릿 ID가 서로 다른 BE에 3번 카운트됩니다. 4. 파티션별 버킷(태블릿) 설정 개수 확인 테이블 설계 시 설정한 버킷 수를 확인하고 싶을 때 유용합니다.
Copy code
sql
-- v3.1 이상 권장
SELECT 
    TABLE_NAME, 
    PARTITION_NAME, 
    BUCKETS 
FROM information_schema.partitions_meta 
WHERE TABLE_NAME = '테이블명';

-- 또는
SHOW PARTITIONS FROM <table_name>;
5. 상세 태블릿 정보 조회 특정 태블릿 ID에 대해 어느 DB/테이블에 속해 있는지 확인하고 싶을 때 사용합니다.
Copy code
sql
SHOW TABLET <tablet_id>;
팁: 클러스터 전체의 태블릿 개수가 너무 많아지면(수백만 개 이상) FE의 메모리 부하가 커질 수 있으므로,
SHOW PROC '/statistic';
명령어로 주기적으로 전체 개수를 모니터링하는 것이 좋습니다. References • sql-reference/sql-statements/table_bucket_part_index/SHOW_TABLET.md • sql-reference/information_schema/be_tablets.md • sql-reference/sql-statements/cluster-management/nodes_processes/SHOW_PROC.md References • sql-reference/information_schema/be_tablets.md • sql-reference/sql-statements/table_bucket_part_index/SHOW_TABLET.md • administration/management/monitoring/metrics.md