top-objects:最大的表和索引
当前库最大的表(堆、索引、TOAST 分列)和最大的索引。
采集于 2026-10-07(UTC+08),本地 KingbaseES V008R006C009B0014 主节点和备节点,数据库 test。工具是 Go 版源码提交 96c874f 编译的 ~/kbdiag(linux/amd64 静态二进制)。这是测试环境实测,不代表生产环境验收。没有注入故障。数值只属于本次采样。
用法
kbdiag top-objects [--limit N] [--json]
连接参数和 sessions 相同,看的是当前连接的库。这条命令只展示,没有 finding。
主库
~/kbdiag top-objects
echo EXIT_CODE=$?
top-objects OK (KingbaseES V008R006C009B0014, primary, system@local, 2026-10-07T17:20:57+08:00)
tables in test: 207, largest first (total = heap + indexes + TOAST)
table kind total heap indexes toast rows (est.)
public.orders table 170 MB 62 MB 108 MB - 1000000
public.flight_psg_new_info table 107 MB 64 MB 43 MB - 1000000
public.kbdiag_test table 71 MB 43 MB 28 MB 8192 bytes 645750
public.t_perf_test table 8968 kB 6752 kB 2216 kB - 100000
pg_catalog._proc table 4624 kB 1480 kB 712 kB 2432 kB 4650
pg_catalog._dep table 3816 kB 1160 kB 2656 kB - 18518
pg_catalog._att table 3560 kB 2056 kB 1504 kB - 11678
pg_catalog._rewrite table 2320 kB 664 kB 88 kB 1568 kB 576
pg_catalog._desc table 1616 kB 1296 kB 312 kB 8192 bytes 4923
pg_catalog._stat table 728 kB 520 kB 48 kB 160 kB 633
pg_catalog._rel table 640 kB 352 kB 288 kB - 1244
pg_catalog._typ table 464 kB 272 kB 184 kB 8192 bytes 1304
pg_catalog._op table 328 kB 216 kB 112 kB - 1062
pg_catalog._amop table 288 kB 112 kB 176 kB - 1266
pg_catalog._pkg table 248 kB 64 kB 32 kB 152 kB 6
pg_catalog._con table 184 kB 80 kB 96 kB 8192 bytes 136
pg_catalog._ind table 176 kB 112 kB 64 kB - 353
pg_catalog._initprivs table 168 kB 112 kB 48 kB 8192 bytes 777
pg_catalog._amproc table 160 kB 72 kB 88 kB - 641
pg_catalog._trigger table 144 kB 64 kB 72 kB 8192 bytes 192
... 187 more not shown (--limit 0 shows all)
indexes in test: 271, largest first
index table size
public.kbdiag_rev_idx orders 56 MB
public.idx_orders_user_status orders 30 MB
public.kbdiag_test_pkey kbdiag_test 28 MB
public.flight_psg_new_info_pkey flight_psg_new_info 22 MB
public.idx_homs_flight_psg_new_info_tm flight_psg_new_info 22 MB
public.orders_pkey orders 22 MB
public.t_perf_test_pkey t_perf_test 2216 kB
pg_catalog._dep_depender_index _dep 1384 kB
pg_catalog._dep_reference_index _dep 1224 kB
pg_catalog._att_relid_attnam_index _att 888 kB
pg_catalog._proc_proname_args_nsp_index _proc 576 kB
pg_catalog._att_relid_attnum_index _att 568 kB
pg_catalog._desc_o_c_o_index _desc 288 kB
pg_catalog._proc_oid_index _proc 136 kB
pg_catalog._rel_relname_nsp_index _rel 104 kB
pg_catalog._rel_tblspc_relfilenode_index _rel 88 kB
pg_catalog._typ_typname_nsp_index _typ 88 kB
pg_catalog._amop_fam_strat_index _amop 72 kB
pg_catalog._op_oprname_l_r_n_index _op 72 kB
pg_catalog._rel_oid_index _rel 72 kB
... 251 more not shown (--limit 0 shows all)
EXIT_CODE=0
tables 按总大小排序。total 是堆、索引、TOAST 加起来:total = heap + indexes + toast。拆开是因为大是因为数据、索引还是大字段,处理办法不同。heap 是 pg_table_size 减去 TOAST,所以含 FSM 和 VM。TOAST 表和它的索引不单列,算在父表里。- 大小是精确值,不是
relpages 估算(和 freeze 相反):这条命令就是回答“现在谁占了空间”,批量导入后没 ANALYZE 的话 relpages 是旧的。代价是大小函数要加 AccessShareLock,所以表被 VACUUM FULL 这类操作锁住时,整条 probe 会在 lock_timeout 上 skipped 并写明原因,而不是给出部分结果。查询期间被删掉的表读成 NULL 并被过滤掉,所以 ETL 反复建删临时表不会让 probe 失败。 rows (est.) 是 reltuples。indexes 列出最大的索引和它所属的表。这里只看大小,使用次数去看 kbdiag table <表名>。- 分区不会按父表汇总。
- 没有判定:多大算大没有客观线。所以都采到了才是 OK,有 probe 没采到就是 UNKNOWN。
- 实验环境里空间主要在测试用的表上(
orders、flight_psg_new_info、kbdiag_test)。
备库和没有权限时
实验环境里,备库和 kbdiag_ro 账号(没有监控角色,走 127.0.0.1)返回的行和主库一致,只有第一行(角色、用户、时间)不同。大小不需要权限,所以什么都没被遮蔽。备库的采集在 kes-node2 上,kbdiag_ro 的在 kes-node1 上。
退出码
返回使用手册