Skip to content

EXEC procedure와 ROLLUPGAP

Machbase가 공개하는 table·ROLLUP 제어 procedure와 machsql 상태 명령을 설명합니다.

공통 EXEC 형식

execute_procedure_stmt ::=
    'EXEC' procedure_name [ '(' argument_list ')' ]

procedure별 인자 수는 고정됩니다. 이름이 없거나, 인자 수·타입이 다르거나, 대상 객체가 존재하지 않으면 오류를 반환합니다.

TABLE_FLUSH

EXEC TABLE_FLUSH(table_name);
항목계약
인자table 이름 1개
EditionStandard, Cluster
동작table의 pending storage/input buffer를 명시적으로 flush
반환ResultSet 없이 statement 성공 또는 오류 반환
오류table 없음, 접근 불가, flush 처리 실패

검증이나 운영상 명시적인 storage flush가 필요할 때 사용합니다. transaction commit 또는 조회 가시성을 보장하는 수단은 아닙니다. 입력 row마다 호출하면 flush 비용이 증가하므로 반복 호출하지 않습니다.

INDEX_FLUSH

EXEC INDEX_FLUSH(table_name);
EXEC INDEX_FLUSH(table_name, index_name);

table 이름만 지정하면 그 table의 모든 index build가 끝날 때까지 기다립니다. index 이름도 지정하면 해당 index만 대상으로 하며, 지정한 index가 해당 table에 속하지 않으면 오류입니다. ResultSet은 반환하지 않습니다.

TABLE_REFRESH

EXEC TABLE_REFRESH(lookup_table_name);
항목계약
인자LOOKUP table 이름 1개
EditionStandard, Cluster
동작영속 LOOKUP 내용을 runtime memory table에 다시 반영
이름 범위현재 database의 table, owner.table 허용
권한table owner 또는 허용된 관리 사용자
쓰기 제한READ ONLY database에서는 실행할 수 없음
반환ResultSet 없이 statement 성공 또는 오류 반환
오류LOOKUP 이외의 table, table 없음, write admission 실패

실행 전 진행 중인 LOOKUP 변경과 조회 영향을 확인하고, 완료 후 row 수와 대표 key를 다시 조회합니다.

FREEZE_TAG_INDEX와 UNFREEZE_TAG_INDEX

EXEC FREEZE_TAG_INDEX(tag_table_name);
EXEC UNFREEZE_TAG_INDEX(tag_table_name);

TAG table의 tag index를 freeze하거나 다시 해제하는 1인자 procedure입니다. TAG 이외의 table에는 사용할 수 없습니다. index 유지보수 경계를 직접 제어하는 운영 명령이므로 일반 입력 경로에서 상시 사용하지 말고, 실패 시 반드시 UNFREEZE_TAG_INDEX 실행 여부를 확인합니다. 두 명령 모두 ResultSet 없이 statement 성공 또는 오류를 반환합니다.

ROLLUP_START와 ROLLUP_STOP

EXEC ROLLUP_START;
EXEC ROLLUP_START(rollup_name);

EXEC ROLLUP_STOP;
EXEC ROLLUP_STOP(rollup_name);

두 procedure 모두 0인자와 rollup 이름 1인자 형식을 지원합니다. 이름을 지정하면 해당 ROLLUP을, 생략하면 현재 사용자 범위의 ROLLUP을 제어합니다. SYS의 무인자 실행은 전체 사용자 범위에 적용될 수 있으므로 대상 확인과 변경 승인이 필요합니다.

존재하지 않는 ROLLUP, 이미 시작한 대상의 START, 이미 중지한 대상의 STOP은 오류입니다. V$ROLLUP.RUN_STATE로 변경 결과를 확인합니다.

ROLLUP_FORCE

EXEC ROLLUP_FORCE;
EXEC ROLLUP_FORCE(rollup_name);

0인자 형식은 현재 사용자 범위의 기본 SEC→MIN→HOUR 계층을 처리합니다. 이름을 지정하면 해당 ROLLUP source의 현재 END_RID까지 따라잡도록 기다리는 동기 경로입니다. 중지된 ROLLUP은 먼저 START 상태인지 확인합니다.

완료 뒤 V$ROLLUPSHOW ROLLUPGAP으로 모든 관련 source 단계의 gap을 확인합니다.

ROLLUP_REBUILD

태그와 시간 범위를 받는 4인자 Standard 전용 procedure입니다. 자세한 계약은 ROLLUP_REBUILD를 정본으로 사용합니다.

SHOW ROLLUPGAP

SHOW ROLLUPGAP;

SHOW ROLLUPGAP은 서버 SQL이 아니라 machsql 전용 client 명령입니다. JDBC, ODBC와 SDK의 일반 SQL 실행 API에 같은 문자열을 보내지 마십시오.

Standard 출력에는 source·ROLLUP table, source END_RID, ROLLUP END_RID, GAP, 상태와 wakeup 시간이 포함됩니다. Cluster 출력에는 HOSTNAME이 추가되어 노드별 상태를 표시합니다. GAP = SRC_END_RID - ROLLUP_END_RID이며, 계층의 모든 source→ROLLUP 행이 0인지 확인해야 전체 계층이 따라잡았다고 판단할 수 있습니다.

관련 문서

최근 업데이트