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