insert into table_a(a1,a2,a3,a4....) select a1,a2,a3,a4... from table_b 速度如何优化

【TiDB 使用环境】生产环境 /测试/ Poc
【TiDB 版本】8.1.0
【操作系统】rockylinux 9.X
【部署方式】机器部署(3台16C 32GB的机械硬盘虚拟机)
【集群数据量】1
【集群节点数】3
【问题复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】

如何能够提高insert into table_a(a1,a2,a3,a4…) select a1,a2,a3,a4… from table_b 这种复制数据的速度,比如Oracle提供append 和关闭日志的方式,可以极大提高速度,tidb有没有类似的

把大事务拆成小事务,一种是你自己拆成多个sql执行,一种是用tidb的 batch方式自动拆,一次处理10000条左右

如果目标表是空表,使用 import into 语法。 https://docs.pingcap.com/zh/tidb/v8.1/sql-statement-import-into/

试试分批次呢

之前线下交流会有分享过,可以用批量的方法

数据量多大?
1,利用batch on https://docs.pingcap.com/zh/tidb/stable/non-transactional-dml/。 简单
2,自己手动拆批,然后insert。灵活。

使用Mybatis的执行batch on的SQL报错,但是使用最原始的jdbc来测试又不报错:

org.springframework.jdbc.BadSqlGrammarException: 
### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: (conn=9291649) You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'BATCH ON temp.id_zkuytv limit 200000 insert into dwd_jzg_jgzjbxx_pass(gh,sfzj...' at line 1
### The error may exist in URL [jar:file:/home/dc/prod/dc/dc-govern/dc-govern-executor-5.6.1.jar!/BOOT-INF/lib/dc-core-server-infrastructure-5.6.1.jar!/mapper/gvn/TempSqlMapper.xml]
### The error may involve com.yunhuakeji.dc.coreserver.infrastructure.database.mapper.gvn.TempSqlMapper.executeUpdateSql
### The error occurred while executing an update
### SQL: BATCH ON temp.id_zkuytv limit 200000 insert into dwd_jzg_jgzjbxx_pass(gh,sfzjh,xm,mobile,txzp,bzlbdm,bzlbmc,dqztdm,dqztmc,jzglbdm,jzglbmc,xqdm,xqmc,xydm,xymc,xldm,xlmc,zcdm,zcmc,id_zkuytv,md5_urfbck,mapped_ulenqx,log_id_irkxom,dzyx,xbdm,xbmc) select gh,sfzjh,xm,mobile,txzp,bzlbdm,bzlbmc,dqztdm,dqztmc,jzglbdm,jzglbmc,xqdm,xqmc,xydm,xymc,xldm,xlmc,zcdm,zcmc,id_zkuytv,md5_urfbck,mapped_ulenqx,log_id_irkxom,dzyx,xbdm,xbmc from dwd_jzg_jgzjbxx temp

不知道有没有遇到过,有对应的解决方案