PolarDB中,我这边一执行 ALTER TABLE transfer_bill_detail ENGINE='InnoDB'; analyze table transfer_bill_detail; 这个sqL语句,一级备份物理空间占用的大小就会暴增,之前用mysql的时候执行就不会出现这种情况,数据大小原先是1.9G 执行之后变成600多兆了 一级物理空间增加近10G大小,请问是什么原因 ?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个问题可能是由于PolarDB的备份机制导致的。在执行ALTER TABLE语句后,PolarDB可能会对表进行重新分区或重建索引等操作,这些操作会导致备份数据的物理空间占用增加。
为了解决这个问题,您可以尝试以下方法:
在执行ALTER TABLE语句之前,先停止PolarDB的备份任务,以避免备份数据的物理空间占用增加。
在执行ALTER TABLE语句之后,及时清理不再需要的备份数据,以释放物理空间。
如果可能的话,尝试将PolarDB的数据存储在其他类型的数据库中,如MySQL,以避免出现类似的问题。
一级快照的物理空间我们统计的是真实占用的物理空间大小,PolarDB存储快照的实现方式是写时拷贝,这个实例目前的数据量已经到2.11TB,快照的实际占用空间会随着你们的数据修改操作发生真实的数据copy,然后上涨,这个和alter table不直接相关。这个逻辑是这样的,快照数据逻辑上是原数据的一份真实拷贝,polarBD利用写时copy技术,在快照开始的时候把快照真实数据量降到非常小,几十G远小于现在的2.11T。此回答整理自钉群“PolarDB专家面对面 - 通用功能咨询”
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about