为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:DM8
【操作系统】:x86
【CPU】:
【问题描述】*:达梦驱动不支持executeBatch吗,手动insert all into 写入1w条数据很快,用mybatis调批量写入一样的1w条数据慢10倍的样子吧,完全没法用,oracle驱动完全没问题
一、合并 SQL 语句,减少交互次数
避免单条 INSERT 循环执行,改用批量 INSERT 语法:INSERT INTO 表名(字段1,字段2) VALUES(值1,值2),(值3,值4),...,单次批量建议 500-1000 条数据(过多可能导致 SQL 解析变慢)。
禁用自动提交,手动控制事务:执行SET AUTOCOMMIT OFF,批量插入后统一COMMIT,减少事务日志刷盘次数。
调整数据库参数,适配批量场景
增大日志缓冲区:修改LOG_BUFFER参数(默认可能较小),减少日志写入磁盘的 IO 次数(需重启数据库生效)。
关闭索引 / 约束临时优化:插入前禁用非主键索引、外键约束(ALTER INDEX 索引名 DISABLE),插入后重建(ALTER INDEX 索引名 REBUILD),避免插入时频繁维护索引。
优化表结构与数据格式
避免大字段存储:若表含TEXT、BLOB等大字段,拆分到单独表或改用批量导入工具(如达梦dimp)。
字段类型匹配:插入值的数据类型与表字段类型一致(如 nvarchar 字段避免传入超长字符串),减少隐式转换开销。
选择高效导入工具
优先使用达梦原生工具:dimp(数据泵)或LOAD命令,比 JDBC/ODBC 程序插入快数倍,支持直接读取 CSV / 文本文件批量导入。
程序端优化:使用 JDBC 的addBatch()+executeBatch()方法,关闭自动提交,设置合适的batchSize(如 1000)。
该问题出现的频率较少,在确保驱动版本一致的情况下可以参考以下几种维度的方法调整一下看下:

是不是驱动版本老呀,换一个新版本的驱动试一下呢,比如这个jdbc.zip