GBase 8s
运维管理
文章
GBase 8s常见问题 -- no more pages/no more extents
.png)
发表于2024-01-05 15:25:25413次浏览2个评论
问题现象
insert数据失败,报错no more pages或no more extents
onstat -d查看表所在的dbspace还有剩余空间
解决方法
可能是表占用的page达到上限
执行命令查询表的空间分配情况
[gbasedbt@test ~]$ oncheck -pt testdb:table1
TBLspace Report for testdb:gbasedbt.table1
Physical Address 6:104248
Creation date 12/10/2023 01:18:09
TBLspace Flags 902 Row Locking
TBLspace contains VARCHARS
TBLspace use 4 bit bit-maps
Maximum row size 5675
Number of special columns 12
Number of keys 0
Number of extents 1
Current serial value 1
Current SERIAL8 value 1
Current BIGSERIAL value 1
Current REFID value 1
Pagesize (k) 16
First extent size 4
Next extent size 4
Number of pages allocated 4
Number of pages used 1
Number of data pages 0
Number of rows 0
Partition partnum 6293704
Partition lockid 6293704
Extents
Logical Page Physical Page Size Physical Pages
0 6:119448 4 32
...
Number of pages allocated :已分配page数
Number of pages used :已占用page数
一个非分片表page数上限是16,777,215,如果这两个值已经接近上限,可能无法再分配更多page
另外,extent 的最大数量是 32767,默认分配extent中包含的page会越来越多,一般不会达到上限
如果查询到表分配的page/extent达到上限,导致不能插入数据,则需要将表分片
每个分片都可以包含普通表的page/extent数。
alter fragment on table table1 init
FRAGMENT BY EXPRESSION
id < 100 IN datadbs01,
REMAINDER IN datadbs02;
*注意:建议操作之前备份数据库
评论
登录后才可以发表评论

liaosnet发表于 1 年前
"另外,extent 的最大数量是 32767,默认分配extend中包含的page会越来越多,一般不会达到上限"
这个extent的最大数量不是32767。。而是起决于页大小,partition page页的slot 5中每个区段需要10个字节来描述,还需要减掉slot 1,2,3(特殊字段描述、表描述等)和页头页尾的空间占用。在16K页中,大约15K字节可以用于描述区段,所以至多大约达到1500个区段。
这个extent的最大数量不是32767。。而是起决于页大小,partition page页的slot 5中每个区段需要10个字节来描述,还需要减掉slot 1,2,3(特殊字段描述、表描述等)和页头页尾的空间占用。在16K页中,大约15K字节可以用于描述区段,所以至多大约达到1500个区段。
.png)
wty发表于 1 年前
计算剩余可用extents数:
onchecp -pt testdb:table1
从输出中找到
TBLspace Report for testdb:gbasedbt.table1
Physical Address 1:50612
这个Physical Address是表信息的page(TBLspace)
第一个数是chunk号,第二个数是page号
执行命令查看这个page中的数据
oncheck -pP 1 50612
看里面的slot 5,这里是存extent的地方,每10个字节存储一个extent的信息
可以和oncheck -pt中输出的extents数据对比看,这10个字节记录了逻辑页、chunk号、page号
最后10个字节里chunk号、page号是空的,应该是记录下一个extent的逻辑页,前后两个逻辑页相减可得出这个extent的大小
再看最上面的数据,其中frcnt记录的是page剩余空间,用这个数除以10就可以得出这张表还可以分配多少个extent
onchecp -pt testdb:table1
从输出中找到
TBLspace Report for testdb:gbasedbt.table1
Physical Address 1:50612
这个Physical Address是表信息的page(TBLspace)
第一个数是chunk号,第二个数是page号
执行命令查看这个page中的数据
oncheck -pP 1 50612
看里面的slot 5,这里是存extent的地方,每10个字节存储一个extent的信息
可以和oncheck -pt中输出的extents数据对比看,这10个字节记录了逻辑页、chunk号、page号
最后10个字节里chunk号、page号是空的,应该是记录下一个extent的逻辑页,前后两个逻辑页相减可得出这个extent的大小
再看最上面的数据,其中frcnt记录的是page剩余空间,用这个数除以10就可以得出这张表还可以分配多少个extent


热门帖子
- 12023-05-09浏览数:16913
- 22020-05-11浏览数:10343
- 32019-04-26浏览数:10327
- 42023-09-25浏览数:9754
- 52023-07-04浏览数:9544