为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:
【操作系统】:
【CPU】:
【问题描述】*:查阅一些资料得知,UNDO_RETENTION设置太小了会报回滚段的错,设置太大了可能回滚段空间会过大,请问下达梦官方有调试该参数的建议吗?是需要评估系统事务的耗时吗?需要同步设置其他的参数吗?
了解业务需求:
需要理解应用程序的事务特性,包括平均事务持续时间、事务回滚频率等。这将帮助确定合理的UNDO_RETENTION值。
监控当前设置:
通过查询数据库的系统视图,查看当前的UNDO_RETENTION设置以及撤销段的使用情况。这有助于识别是否有调整的必要。
评估系统事务耗时:
是的,评估系统事务的耗时是调试UNDO_RETENTION参数的重要步骤。长时间运行的事务可能需要更长的UNDO保留时间,以确保在事务期间不会丢失必要的撤销信息。
调整UNDO_TABLESPACE大小:
在增加UNDO_RETENTION之前,确保有足够的撤销表空间(UNDO_TABLESPACE)来容纳所需的撤销数据。
同步设置其他相关参数:
UNDO_RETENTION和UNDO_EXTENT_NUM参数需要匹配。如果UNDO_RETENTION设置得比较大,则UNDO_EXTENT_NUM也需要相应地调大,以避免不断从文件系统申请回滚页造成的性能问题。
测试和评估:
在非生产环境中进行测试,观察并记录性能变化,如I/O、CPU使用率、事务处理速度等,以确保新的UNDO_RETENTION设置不会对应用的正常运行造成负面影响。
定期审查:
数据库环境是动态的,业务需求和技术条件都会随时间改变。因此,应定期审查UNDO_RETENTION设置,以适应不断变化的环境。
undo_retention 建议按需配置,在ROLL表空间能保持较小的情况下(系统内的事务数比较少),可以适当放大一点。
反过来,如果系统内修改非常多,ROLL很大,那么undo_retention调大的话,一定要非常慎重;默认是90秒。
具体场景:如果需要调大undo_retention且ROLL也已经非常大了;那么势必考虑磁盘的是否可以使用SSD,这种情况,万万不可还使用普通机械盘(同步写的IO速率比较一般的磁盘)。
宏观上,undo_retention的配置,是redo roll 的写入,和ckpt速率 需要达到一个均衡的机制;或者可以短时间内失衡,但是在一个业务周期内,如果在 有限的roll大小,可以再追回来,那么undo_retention可以适当调整;否则,一定要谨慎调整!