长事务相关

本文深入探讨了Informix数据库中长事务的机制及其对性能的影响。分析了长事务产生的原因,包括事务跨越过多逻辑日志文件的情况,并讨论了如何通过增加逻辑日志文件和控制事务大小来避免长事务问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      长事务是Informix的一个非常重要的机制,该机制如果处理不好必将非常严重的影响数据库的性能和使用。其他数据库貌似没有类似的问题。

       长事务出现的根源是一个事务跨越的逻辑日志文件的数量和全部逻辑日志文件的数量比例控制的不好。

        先说一个事务跨越的逻辑日志文件的数量,该数量的大小依赖于两个方面:

       1、事务不大,但是一直没有commit,其他事务在大量的使用逻辑日志,当前事务跨越的逻辑日志文件数量就显得很大;

       2、事务确实很多,一直做不完,使用了大量的逻辑日志,在此期间其他事务也在频繁的使用逻辑日志,最后该事务被判定为长事务;

        为了避免长事务的出现, 所以逻辑日志文件的个数和大小都尽量加大。

        长事务带来的影响:

         当一个事务使用的逻辑日志个数>=全部逻辑日志个数*LTXHWM/100的时候,该事务就被判定为长事务,该事务开始回滚,其他事务照旧执行,没有影响。当该事务的逻辑日志使用个数>=全部逻辑日志个数*LTXEHWM/100的时候,数据库就会阻塞全部的在运行的事务(除去被判定为长事务的事务照常回滚之外)。我理解数据库之所以要阻塞其他事务的运行,是为了保障当前正在回滚的长事务必须能够回滚完成。

        一旦在其他事务被阻塞,当前长事务回滚的时候逻辑日志被耗尽,数据库将变的不可用。为了避免该问题的出现,需要及早给数据库服务器增加逻辑日志(onparams -a -d -s -i) 。

       所以控制事务的大小和增加逻辑日志文件的个数是解决长事务问题的王道和根本。

 

长事务的分类大致如下:

1、online.log中看到长事务的信息如下:

Continuing Long Transaction (for COMMIT): tx 0xc0000000b28f5338 username: fisp uid: 107

事务使用逻辑日志的数量超过了LTXHWM,该事务被server判定为长事务。但是事务已经进入了commit或rollback阶段,此时数据库服务器允许该事务仍然使用逻辑日志以便完成提交或回滚,而不进行强制回滚。

2、online.log中看到长事务的信息如下:

Aborting Long Transaction: tx 0xc0000000b8d20c18 username: fisp uid: 107

事务使用逻辑日志的数量超过了LTXHWM,该事务被server判定为长事务。但是事务没有进入了commit或rollback阶段,此时数据库会自动回滚该事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

请叫我曾阿牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值