在 GBase 8s 中获取真实行数而无需 UPDATE STATISTICS
Source: Dev.to
背景
systables 中的 nrows 列只有在执行 UPDATE STATISTICS 时才会更新,因此即使在批量插入后,它也常常显示为 0。如果需要真实的、实时的行数——尤其是对于碎片化的表——可以查询 sysmaster:sysptnhdr 或使用 oncheck。
查询 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";
使用 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";
使用 oncheck
oncheck -pt 命令可以立即显示表或碎片的行数和页数,而无需更新统计信息。
oncheck -pt stores_demo:tab1
输出中包括 Fragment … Number of rows(碎片 … 行数)和 Number of pages(页数)等部分。这是一个在 GBase 数据库中验证数据量的实用运维工具。