GBase 8a数据库集群提供了元数据表 cluster_tables,用于查询某张表占用的磁盘空间,以及各个分片 CLUSTER_TABLE_SEGMENTS 在各自机器上占用的磁盘空间。
目录导航
参考
作用
查看指定表占用的数据空间,最后更新时间等。
提醒:如下方案在某些86版本里,当磁盘表和列特别多时,需要消耗大量的磁盘操作来统计数据库真实占用的磁盘空间。建议测试后如果发现无法接受,请自行使用df 数据库所在分区的方案来进行统计。
注意:
- 此功能在部分V95早期版本不可用,大部分V86和新的V9版本均可用。
- 必须同时提供库名和表名。
- 如想查看整个zxvmax库占用的空间,建议
- 以磁盘df 的/opt/gbase目录估算。
- 或者du -sh /opt/gbase/gnode/userdata/gbase/用户database名字
查看表总空间
警告:在某些老版本的集群,执行如下命令可能会导致宕机,请升级到新版本集群。
select * from information_schema.cluster_tables a where table_schema='MyDBName' and table_name='table_name';
其中MyDBName为库名,比如zxvmax,table_name为表名,比如aggr_volte_register_XXX。
两个参数必须同时指定,每次只能查1个表。
返回结果里已经包含了副本空间。单位是字节。
查看每个分片空间
警告:在某些老版本的集群,执行如下命令可能会导致宕机。如只查询表磁盘空间占用,请使用前一个功能即可,或者请升级到新版本集群。
select * from information_schema.CLUSTER_TABLE_SEGMENTS a where table_schema='MyDBName' and table_name='table_name';
表总空间,等于分片大小的总和*副本数量。 对于复制表就是*节点数量。
使用样例
- update_time是最后修改时间,比如加载;
- table_data_size是纯数据占用的磁盘空间;
- table_storage_size是全部占用的空间,包括元数据和数据等。
- suffix 是分片号
分布表样例
总空间是每个分片空间的和,乘以副本数量。 本例副本是1+1=2。
如下是一个1000万行的表的情况。
gbase> select count(*) from testdb.t2;
+----------+
| count(*) |
+----------+
| 10000000 |
+----------+
1 row in set (Elapsed: 00:00:00.17)
总数据量情况。共2.7G(已经包含副本空间)。
gbase> select * from information_schema.cluster_tables a where table_schema='testdb' and table_name='t2';
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
| TABLE_VC | TABLE_SCHEMA | TABLE_NAME | CREATE_TIME | UPDATE_TIME | TABLE_DATA_SIZE | TABLE_STORAGE_SIZE | TABLE_TYPE |
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
| vcname000001 | testdb | t2 | 2020-09-05 07:42:51 | 2020-11-29 09:42:14 | 162129972 | 2740314218 | random |
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
分片情况,每个450M,3个累积1.37G。
gbase> select * from information_schema.CLUSTER_TABLE_SEGMENTS a where table_schema='testdb' and table_name='t2';
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
| TABLE_VC | TABLE_SCHEMA | TABLE_NAME | SUFFIX | HOST | TABLE_DATA_SIZE | TABLE_STORAGE_SIZE | DATA_PERCENT |
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
| vcname000001 | testdb | t2 | n1 | 10.0.2.102 | 27159648 | 456672843 | 33.5036% |
| vcname000001 | testdb | t2 | n2 | 10.0.2.202 | 26748872 | 456634381 | 32.9968% |
| vcname000001 | testdb | t2 | n3 | 10.0.2.102 | 27156466 | 456849885 | 33.4996% |
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
3 rows in set (Elapsed: 00:00:00.01)
分片累积*副本数2,基本和总和一样
gbase> select 456672843*3;
+-------------+
| 456672843*3 |
+-------------+
| 1370018529 |
+-------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> select 456672843*3*2;
+---------------+
| 456672843*3*2 |
+---------------+
| 2740037058 |
+---------------+
1 row in set (Elapsed: 00:00:00.00)
复制表样例
总空间等于分片空间*节点数。本例是3个节点。
gbase> select * from information_schema.cluster_tables a where table_schema='testdb' and table_name='t1_1';
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
| TABLE_VC | TABLE_SCHEMA | TABLE_NAME | CREATE_TIME | UPDATE_TIME | TABLE_DATA_SIZE | TABLE_STORAGE_SIZE | TABLE_TYPE |
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
| vcname000001 | testdb | t1_1 | 2020-12-01 21:24:00 | 2020-12-01 21:24:00 | 1713 | 6285 | replicated |
+--------------+--------------+------------+---------------------+---------------------+-----------------+--------------------+------------+
1 row in set (Elapsed: 00:00:00.01)
gbase> select * from information_schema.CLUSTER_TABLE_SEGMENTS a where table_schema='testdb' and table_name='t1_1';
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
| TABLE_VC | TABLE_SCHEMA | TABLE_NAME | SUFFIX | HOST | TABLE_DATA_SIZE | TABLE_STORAGE_SIZE | DATA_PERCENT |
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
| vcname000001 | testdb | t1_1 | n1 | 10.0.2.102 | 571 | 2095 | 100% |
+--------------+--------------+------------+--------+------------+-----------------+--------------------+--------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> select 2095*3;
+--------+
| 2095*3 |
+--------+
| 6285 |
+--------+
1 row in set (Elapsed: 00:00:00.00)