DMS中,dts源和目标选择同一个实例,选择某一个表进行同步 到目标实例修改表名为wx_push_tmp where条件增加时间过滤 这个where应该是针对是源实例的wx_push进行判断同步到wx_push_tmp吧,这样操作没毛病?
在处理大量数据时,尤其是在同一个数据库实例内,通常需要考虑效率和影响。针对你的具体场景,这里有几个建议和考虑因素:
* 你可以写一个SQL查询,从大表A中选择需要保留的4000W数据,并直接插入到新表B中。这种方法通常比导出再导入要快得多。
* SQL示例:`INSERT INTO B SELECT * FROM A WHERE your_condition;`
* 这种方法的效率取决于多个因素,包括硬件、索引、表结构、并发工作负载等。
* DMS(数据迁移服务)的具体性能取决于多种因素,包括网络带宽、磁盘I/O、CPU等。
* 导出4000W条记录可能需要很长时间,特别是如果每条记录都很大或者网络/存储性能有限的情况下。
* 通常,这种方法比直接SQL查询要慢得多,并且可能涉及额外的成本和复杂性。
* DTS(数据传输服务)通常用于跨实例或跨账户的数据迁移。
* 在同一个实例的同一个数据库内,使用DTS可能不是最有效的方法,因为它可能引入不必要的开销和复杂性。
* 在你的场景中,直接在数据库内部使用SQL查询可能是更简单、更快速的方法。
* 如果直接删除8000W条数据,可能会对数据库性能产生重大影响,甚至可能导致事务日志迅速增长,从而耗尽存储空间。
* 你的策略(即将需要保留的数据复制到新表,然后替换旧表)是一个合理的选择。
* 在替换旧表之前,请确保新表已正确配置索引和优化,以便它能够高效地处理查询。
* 如果DTS的源和目标都是同一个实例的同一个数据库,这可能不是一个典型的使用场景。
* 通常,DTS用于将数据从一个实例(或账户)迁移到另一个实例(或账户)。
* 在你的情况下,直接在SQL层面处理数据可能是更直接、更有效的方法。
综上所述,基于你的具体需求和环境,使用直接的SQL查询来选择和插入数据可能是最简单、最有效的方法。在执行这些操作时,请务必小心,并确保你有适当的备份和恢复策略。
对于大表A查询4000W数据拷贝到新表B,可以考虑使用DMS的数据同步功能。具体操作步骤如下:
关于DMS数据导出4000W数据的耗时问题,这取决于您的服务器性能和网络状况。一般来说,如果服务器性能较好且网络状况良好,导出4000W数据可能需要几分钟到十几分钟的时间。建议您根据实际情况进行测试。
对于您提到的DTs同实例同库前的表数据同步问题,您可以按照以下步骤操作:
这样操作应该没有问题,可以实现将大表中的4000W数据拷贝到新表中,并保留历史数据8000W+的需求。
是的,过滤条件仅支持过滤当前对应表的字段,不支持跨表过滤,详细参考
https://help.aliyun.com/document_detail/125673.htm?
此回答来自钉群阿里云DMS数据管理用户交流群。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。