在主从服务器上,同一个表的表空间文件大小相差特别大,可能原因是什么,怎么解决?

Posted 周万春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在主从服务器上,同一个表的表空间文件大小相差特别大,可能原因是什么,怎么解决?相关的知识,希望对你有一定的参考价值。

在主从服务器上,同一个表的表空间文件大小相差特别大,可能原因是什么,怎么解决?


可能的原因:
    1mysql表默认是InnoDB引擎且目前索引只支持B+树索引,在数据的增删改过程中,会导致表产生碎片,主从服务器上同张表的碎片率不同也会导致表空间相差很大。
    2、主库整理过碎片,从库是从原先的未整理的物理备份中恢复出来的。
    3、主从表结构不一致,如从库可能比主库多索引。
    4、主从表的行格式不一致,如主库为dynamic,从库为compressed。
    5、个别云数据库在从库上可能采用特殊的并行复制技术,导致在从库上有更高的碎片率(有个极端的案例,同一个表在主库只有6G,从库上则有将近150G)


解决方式:
    1、保证主从表结构一致(包括page大小、索引、行格式等)
    2、在业务低峰期使用pt-osc或gh-ost通过alter table xxx engine=innodb;重整表空间,消除碎片(切记:执行前要先检查有无未结束事务或其他未释放锁)

 

以上是关于在主从服务器上,同一个表的表空间文件大小相差特别大,可能原因是什么,怎么解决?的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 高水位说明和释放表空间,加快表的查询速度

表数据都删了一半,可我的表文件咋还是那么大

sqlserver,不同数据库,两个相同表,表大小差一倍

MySQL到底能支持多大的数据量

如何查看oracle表空间已使用大小

oracle占用的空间特别大,该如何解决?