在 GBase 8s 中获取真实行数而无需 UPDATE STATISTICS

发布: (2026年5月9日 GMT+8 19:24)
2 分钟阅读
原文: Dev.to

Source: Dev.to

背景

systables 中的 nrows 列只有在执行 UPDATE STATISTICS 时才会更新,因此即使在批量插入后,它也常常显示为 0。如果需要真实的、实时的行数——尤其是对于碎片化的表——可以查询 sysmaster:sysptnhdr 或使用 oncheck

查询 sysptnhdr

sysmaster 数据库中将 systables.partnumsysptnhdr.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 数据库中验证数据量的实用运维工具。

0 浏览
Back to Blog

相关文章

阅读更多 »