GBase 8s
适配迁移
文章
SQL方式查询GBase 8s表空间大小
发表于2023-06-09 13:00:011057次浏览2个评论
GBase 8s最大的逻辑存储单元是数据空间dbspace,dbspace的使用也很灵活,可以建库的时候指定默认的数据空间(create database xxx in dbspace),也可以在建表的时候指定(create table xxx in dbspace),一个表也可分布在不同的数据空间(分区表),大对象类型也可以指定到不同的数据空间(PUT子句),通过SQL的方式查询一张表的所使用的存储空间的大小呢,下面进行介绍。
1、相关系统表介绍
数据空间相关的系统表主要涉及如下几个,都在sysmaster系统库中:
sysdbspaces,描述数据库服务所管理的每个dbspaces
主要涉及的几个参数如下,其余参数解释见管理员手册
dbsnum - 描述dbspace编号
name - 描述dbspace名称
pagesize - 描述dbspace空间页大小,单位是B
sysextents,描述表有关扩展数据块分配的信息,扩展数据块是表空间分配的最小单位
主要涉及的几个参数如下
dbsname - 数据库名称
tabname - 表名
size - 扩展数据块的大小
systabnames,描述表所在的数据空间
主要涉及的几个参数如下
dbsname - 数据库名称
tabname - 表名
dbsnum - dbspace编号
2、表空间大小计算
从以上几个表可以看出,表空间的大小并不能准确的计算出来,但可以进行粗略估计,以分片表tab_round_robin为例,计算表空间大小需要知道表所在数据空间的页大小,及分配的extent大小
select a.tabname tabname,b.name dbsname,a.size*b.pagesize/1024 total_size_kb from sysextents a inner join (select a.tabname,b.name,b.pagesize from systabnames a inner join sysdbspaces b on a.dbsnum = b.dbsnum) b on a.tabname = b.tabname where a.tabname = 'tab_round_robin' group by 1,2,3;
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526