用java 的preparestatement,单次提交的量不是越大越好,不建议过大;看sql的复杂程度2000~10000就可以了;比较复杂的2000~5000,简单的可以多点;批量提交的意义在于提高网络的效率;量大了,应用端占用java虚拟机的内存会很大,会消耗过多资源;数据库去解析这批对象也是需要资源的。你...
显示全部用java 的preparestatement,单次提交的量不是越大越好,不建议过大;
看sql的复杂程度2000~10000就可以了;比较复杂的2000~5000,简单的可以多点;
批量提交的意义在于提高网络的效率;
量大了,应用端占用java虚拟机的内存会很大,会消耗过多资源;
数据库去解析这批对象也是需要资源的。
你可以去看看数据库的DB2DIAG,可能会有内存的变动(如果是自动调节);
一批sql执行也需要一定的时间,然后才提交,提交了连接才会接受下一批数据。
我猜想可能是这样的:
4W的量还是不小,写日志会不少,数据读写也不会少,执行sql时间不短,下一批sql发到数据库的时候还没有执行完,就会等待;等待达到某个时间,然后就抛出这个错了。
4W和1W的执行时间差距能达到这个程度,极有可能是缓冲池不够,你可以增大缓冲池试试。不过还是不建议用那么大的提交量,而且越大不一定越快。
收起