这个没啥其他好办法。做了个小实验,单节点回滚20w数据的测试在logbuffsize 4m和40m的情况下从27秒变成了23秒。其中读日志的时间从23秒变成20秒。所以提高logbuffsize,把日志放在ssd上,你的回滚才会变快。又做了个实验,把db2_logger_non_buffered_io设置成off,1秒多就完成了。也就是打开了日志的文件系统缓存。
收起DB2的事务回滚基本就是将事务反向操作一遍,如果是大事务回滚,那回滚的时间就会比较长,这是没办法的时候,慢慢等等吧。
后续可以考虑将大事务分步执行,及时提交。
⊙﹏⊙b汗,你们那边不会把大批量处理作业装到一个 “事务”里了吧?
没啥办法,您慢慢等着吧。
DB2 v11.1 在大批量事务日志回滚上已经做了优化,官方测试性能已经提升了4倍多。