UPDATE STATISTICS 없이 GBase 8s에서 실제 행 수 가져오기
Source: Dev.to
Background
systables 의 nrows 컬럼은 UPDATE STATISTICS 를 실행할 때만 업데이트되므로, 대량 삽입 직후에도 종종 0 으로 표시됩니다. 실제 실시간 행 수가 필요할 경우—특히 파편화된 테이블에 대해—sysmaster:sysptnhdr 를 조회하거나 oncheck 를 사용할 수 있습니다.
Querying sysptnhdr
sysmaster 데이터베이스에서 systables.partnum 과 sysptnhdr.partnum 을 조인합니다. sysptnhdr.nrows 는 실제 행 수를 제공하고, npdata 는 사용 중인 데이터 페이지 수를 나타냅니다.
SELECT t.tabname,
t.partnum,
t.nrows,
p.nrows,
p.npdata
FROM stores_demo@gbaseserver:systables t,
sysmaster@gbaseserver:sysptnhdr p
WHERE t.partnum = p.partnum
AND t.tabname = "customer";
Using sysfragments
sysfragments 를 사용해 파티션 번호(partn)를 얻고 이를 sysptnhdr.partnum 과 조인하면 파편별 행 수를 확인할 수 있습니다.
SELECT f.partn,
p.nrows,
p.npdata
FROM sysfragments f,
sysmaster@gbaseserver:sysptnhdr p
WHERE f.partn = p.partnum
AND f.tabname = "tab1";
Using oncheck
oncheck -pt 명령은 통계 업데이트 없이도 테이블 또는 파편에 대한 행 수와 페이지 수를 즉시 보여줍니다.
oncheck -pt stores_demo:tab1
출력에는 Fragment … Number of rows 와 Number of pages 와 같은 섹션이 포함됩니다. 이는 GBase 데이터베이스에서 데이터 양을 검증할 때 유용한 운영 도구입니다.