首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在AWS中创建读副本是否清除了所有表的DATA_FREE?

在AWS中创建读副本是否清除了所有表的DATA_FREE?
EN

Database Administration用户
提问于 2023-03-07 10:39:37
回答 2查看 93关注 0票数 1

我们有一个MySQL表,其中DATA_FREE已经增长到TB的大小。我们无法在这样大的表上运行优化,因为这样的表有数十亿行。我们在较低的环境中做了POC,在那里我们有72.5GB的DATA_FREE和254 M的记录。我们禁用了索引并在表上运行了优化命令,整个优化查询需要65分钟才能完成,包括索引恢复时间。我们怀疑这将需要大量的时间生产,我们不能有这么长的停工时间。此表具有频繁的读、写和删除。

我们还计划将MySQL服务器从5.x升级到8.x。ops团队通过创建现有数据库的read副本来完成此过程。我想知道在阅读复制创建过程中,它是否释放了DATA_FREE?

EN

回答 2

Database Administration用户

发布于 2023-03-07 17:30:54

不是的。

RDS读取副本是从源的快照创建的。也就是说,对源上的表空间进行字节对字节的物理备份,完成这些表空间中存在的任何数据碎片。

如果您需要在不停机的情况下消除data_free,则使用pt-在线-模式更改。它实际上比优化表花费的时间更长,但这并不是一个问题,因为您可以在表工作时继续读和写表。

票数 0
EN

Database Administration用户

发布于 2023-03-28 17:36:43

你是如何进入需要OPTIMIZE的情况的?如果是因为“大删除”,那么有几种更好的方法-- http://mysql.rjweb.org/doc.php/deletebig

如果上次创建或更改表时关闭了innodb_file_per_table,则该度量将讨论共享存储,而不是特定的表。

如果您没有关闭索引,您的OPTIMIZE可能运行得更快;它将重建索引,并且可能比您的速度更快。

如果删除是为了清除“旧”数据,那么PARTITION BY RANGE(TO_DAYS())可能是今后最好的选择。分区。如果删除的是其他内容,请详细说明。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/324477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档