gbase8s在数据迁移过程中数据膨胀问题

        近期在几个现场发现gbase8s数据膨胀问题,无论是同构或者异构迁移到gbase8s中,都存在此问题。

后经过排查发现为gbase8s数据库配置参数MAX_FILL_DATA_PAGES 导致。

官方描述为

如果启用了 MAX_FILL_DATA_PAGES,服务器将 在最近修改的页面中添加一个新行,其中包含现有行(如果添加) 该行至少留出 10% 的页面空间,以便将来扩展 页面中的所有行。如果未设置 MAX_FILL_DATA_PAGES,则仅当页面上有足够的空间时,服务器才会添加该行以允许新行增长到其最大长度。

实际验证如下

pagesize =2k

当MAX_FILL_DATA_PAGES=0 时

drop table xx1;
create table xx1 (c1 varchar(1500));
insert into xx1 values(
'${__RandomString(100,abcdefghigklmnopqrstuvwxyz1234567890,)}'
);

当插入四条数据时

此时 free size 大于 表定义的varchar(1500)

当再插入一条数据后

计算方式为  2048 页大小  - 5 * 100 (varchar100) - 4 (尾部时间戳大小) - 5 * 2 (varchar标识位) - 5*4 (slot偏移量大小) =1490 

此时free size 已经小于 varchar(1500),因此 当下一条数据插入是,将写入下一个页面

当MAX_FILL_DATA_PAGES=1 时

drop table xx1;
create table xx1 (c1 varchar(1500));
insert into xx1 values(
'${__RandomString(1500,abcdefghigklmnopqrstuvwxyz1234567890,)}'
);

经多次验证发现 ,当 free szie 小于 202 时 插入的数据将写入到下一个页面

计算方式为

[2048 (pagesize) -24 (头部信息) -4 (尾部时间戳)] * 10%=202

总结

如果将 MAX_FILL_DATA_PAGES 配置参数设为 1,数据库服务器将可向具有可变长度行的表中每个页面插入更多行。

优势: 
减少存储数据所需的磁盘空间 
使服务器对缓冲池的使用更有效 
减少表扫描时间 


缺点: 
服务器可能以不同物理顺序存储行。 
当页已满时,对行中可变长度列的更新可导致行扩展以至于在页面中不再适合。这将导致服务器将行划分到两页中,从而增加了该行的访问时间。 

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gbase8s 是一个高性能的分布式关系型数据库,而MySQL则是一个常用的关系型数据库管理系统。将数据从gbase8s迁移到MySQL可以通过以下几个步骤完成。 首先,我们需要创建一个MySQL数据库,确保其具备与gbase8s相同的表结构。可以通过使用CREATE TABLE语句在MySQL创建相应的表,注意确保表结构和列的数据类型与gbase8s的表一致。 接下来,我们需要将gbase8s数据导出为SQL文件。可以使用导出工具,如mysqldump或SELECT INTO OUTFILE语句来完成此操作。导出的SQL文件包含了从gbase8s提取数据的语句。 然后,我们可以将导出的SQL文件导入到MySQL数据库。可以使用MySQL的命令行工具或者图形化界面工具,如MySQL Workbench来执行导入操作。将SQL文件导入到MySQL后,即可将数据插入到对应的表。 在数据迁移过程,需要注意一些数据类型和语法的差异。例如,某些数据类型在gbase8s可能与MySQL不完全相同,此时需要进行相应的转换或调整。此外,还需要注意主键、索引、约束等方面的差异,以确保数据的完整性和一致性。 最后,进行数据迁移后,建议对新迁移数据进行验证和测试,以确保数据迁移的准确性和完整性。 综上所述,在迁移gbase8s数据到MySQL时,我们需要创建MySQL数据库,导出gbase8s数据为SQL文件,然后将SQL文件导入到MySQL数据库,并进行必要的数据类型和语法转换。最后,验证和测试迁移后的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值