如何快速迁移一张表的数据 到 另一张表

dumpling + lightning 吧

dumpling + lightning , 后面会简化为 sql import

数据量不大用INSERT INTO ... SELECT ,数据量大那就要用dumpling导出,lightning导入

你看看 dumpling 导数的时候执行的是什么查询,然后你在把前面换成 insert into + dumpling 类似的sql就行了。简单而言就是先用_tidb_rowid 做个分片。然后开多个并发操作小事务。

backup oldtable to s3;
restore newtable from s3;
最快 物理文件复制

物理导入最快吧

都不是物理导入 是sst文件复制了一份 最快

感觉还是导出导入最快,当然我选择用工具传输

基于主键可以 并发导入

dumpling + lightning

看你的 tidb 版本,不同版本处理方式不同,低版本最好的方式就是 dumpling + Lightning,高版本有 batch insert、import into select等

insert select 也可以,select 先查下_tidb_row_id,然后根据rowid分批提交。速度也还可以,比较省事。不能一次太大量,会很慢。batch可以省事些。看追求速度不,很多方式。大表肯定是导入再物理导入最快的。

lightning 导入的时候,怎么指定导入哪个库的哪张表,导出的时候,没有指定导出表结构,库里已经有表结构了

dumpling导出的文件是以库名.表名来命名的,你把库名表名改成你要的就可以了。

是改导出的文件名和文件内容?,不能在lightning里面指定吗

改名是最方便的,导出的是csv文件 改文件名就行,按照文件名匹配的

lightning导入会增加磁盘io压力,达到100%,线上还是选择insert…select会好点

insert。。select

oacle的最佳实践应该是通过data pump来导出导入。insert into为什么不是最快的呢?因为对于大表会产生很大的undo,因此生产一般不用。
对应的tidb,应该是用import into的方式比较安稳。

为什么要做分区呐?有什么明显的优势嘛

1 个赞