我正在使用 Sybase ASE 15.5 和 JDBC 驱动程序 jconnect 4,并且在一个包含 4 亿行、列 (integer, varchar(128) 的大型表上,使用executebatch() 插入批处理大小为 +/-40 行的速度缓慢),varchar(255)),列 (1,2) 上的主键和聚集索引以及列 (2,1) 上的非聚集索引。每批约 40 行需要约 200 毫秒。缓慢与表的大小有关吗?我知道删除索引可以提高性能,但不幸的是这不是一个选择。如何提高插入速度?
注意:这是应用程序实时运行的一部分,这不是一次性迁移,因此我不会使用 bcp 工具。
编辑:我已经检查了mysql的这个答案,但不确定它是否适用于Sybase ASEhttps://stackoverflow.com/a/13504946/8315843
插入速度慢的原因有很多,例如:
一些需要考虑的想法:加快插入速度:
begin/commit tran
包装纸中;这往往会推迟日志写入,直到发出 commit tran
为止;写入日志的次数越少,意味着等待日志写入被确认的时间就越短上述一些内容已包含在这些 SO 线程中: