降低持久性以提高db2中的性能



在db2 10.5中,事务提交是否可能不等待日志IO完成并将控制权返回给客户端,就像SQL server的延迟持久性一样?当存在大量的串行小事务时,有什么方法可以减少日志IO的数量吗?

Linux/Unit/Windows上的Db2版本11.1目前不支持某些版本的Microsoft SQL server提供的延迟提交。

对于某些类型的处理,特别是大批量处理,使用未标记的全局临时表作为中间表通常非常方便。这是消除日志开销的一种方便方法,尽管用例仅限于特定场景。这样的表(声明的全局临时表或创建的全局临时表格)可以让您在不产生日志开销的情况下进行快速处理,尽管您必须设计批处理(通常是存储过程)来处理这些类型的表格,包括故障后重新启动和恢复等的能力。

如果您有包含插入和更新(而非批处理)的高频离散OLTP事务,则应集中精力优化活动日志记录配置。例如,确保活动日志位于最快的介质上,确保Db2从不等待日志文件,确保logbufsz足够,确保缓冲池清洁最佳等,确保事务日志文件的大小与RTO和RPO服务级别兼容。

Db2 LUW有一个名为mincommit的数据库配置参数。mincommit的值表示在将日志缓冲区清空到磁盘之前将提交多少事务。这可能就是你想要的。

从Db2 LUW v10.5及更高版本开始,此参数将被忽略,并且该值仅在v10.1以下的Db2 LUV版本上有意义。

对于旧版本的Db2LUW,建议将该值保留为1。在大多数情况下,在引入风险的同时,没有性能改进。因此,配置参数在10.1版本中已被弃用。我的建议是:即使它仍然存在,也不要使用它。

最新更新