在db2 10.5中,事务提交是否可能不等待日志IO完成并将控制权返回给客户端,就像SQL server的延迟持久性一样?当存在大量的串行小事务时,有什么方法可以减少日志IO的数量吗?
对于某些类型的处理,特别是大批量处理,使用未标记的全局临时表作为中间表通常非常方便。这是消除日志开销的一种方便方法,尽管用例仅限于特定场景。这样的表(声明的全局临时表或创建的全局临时表格)可以让您在不产生日志开销的情况下进行快速处理,尽管您必须设计批处理(通常是存储过程)来处理这些类型的表格,包括故障后重新启动和恢复等的能力。
如果您有包含插入和更新(而非批处理)的高频离散OLTP事务,则应集中精力优化活动日志记录配置。例如,确保活动日志位于最快的介质上,确保Db2从不等待日志文件,确保logbufsz足够,确保缓冲池清洁最佳等,确保事务日志文件的大小与RTO和RPO服务级别兼容。
Db2 LUW有一个名为mincommit
的数据库配置参数。mincommit的值表示在将日志缓冲区清空到磁盘之前将提交多少事务。这可能就是你想要的。
从Db2 LUW v10.5及更高版本开始,此参数将被忽略,并且该值仅在v10.1以下的Db2 LUV版本上有意义。
对于旧版本的Db2LUW,建议将该值保留为1。在大多数情况下,在引入风险的同时,没有性能改进。因此,配置参数在10.1版本中已被弃用。我的建议是:即使它仍然存在,也不要使用它。