Informix是否可在线扩展字段长度

Question1
1、informix 7.31UD3 可以在线扩栏位长度吗?用户想把栏位长度从16扩到32。
2、上次巡检中提到AA数据库上BB表上的索引CC要重建,我测试过重建时间很长,要几个小时,AP不能接受停机。
想问下,是否可以在线新建一个索引CC2(方法同CC),然后删除旧的索引,rename新索引到CC 吗?如果新建索引对业务影响很小,然后rename的时间很短,这样就可以尽量缩短停机时间。
Answer1
1、可以,但可能会造成长时间的锁表,扩大字段长度经常会导致表的重构,还有可能造成长事务的产生,但有时不会造成这个情况,主要看每个页中空余空间的多少,可将生产数据通过ontape恢复到测试机上,在测试机上先做一个测试,看看会不会导致长时间的锁表。
2、7.31UD3不支持在线建索引,必须得到IDS10以后的版本才支持不锁表的在线建索引。而且informix数据库不支持在相同的字段上建同样的索引。
 可通过设置PDQ提高创建索引的效率,缩短创建索引的时间。
 set PDQPRIORITY 80;   最高是100,不过在生产系统上如果设置100,会影响其他正在运行的联机事务的处理效率
 create index ....
 
 
Question2
你说的锁表是因为表的重构导致的?那长事务指的是什么呢?
Answer2
表重构过程中会引起日志的大量使用(类似于往表中插入大量记录),如果逻辑日志的总量不够的话,就会导致长事务。
长事务时informix数据库特有的概念,由于informix的逻辑日志总量是固定的(现在和舰的生产系统一般都是2500*4M=10G的逻辑日志),试想如果有一个事务如果用光了所有这些逻辑日志,那么数据库就会由于无法写入逻辑日志而挂起,为了防止这种情况的出现,informix设计了两个参数,一个是LTXHWM(长事务高水位线),这是一个百分比(目前和舰的生产系统设置是40),如果某一事务使用了这个逻辑日志总量的LTXHWM的逻辑日志,则数据库会认为这个事务是一个长事务,强迫其回滚,这是其他事务继续正常处理,但这样还存在另一个风险,如果在这个事务的回滚过程中,其他正常的事务用完了剩余的逻辑日志,同样也会导致数据库无法再写入逻辑日志而挂起,另一个参数LTXEHWM(长事务排他高水位线),同样是一个百分比(目前和舰的生产系统设置是50),如果某一长事务回滚过程中,其他事务使用逻辑日志达到逻辑日志总量的LTXEHWM时,数据库会强制所有事务回滚。
因此,那些使用逻辑日志量大,执行时间有很长的事务都有成为长事务的可能。
 
Question3
你的意思是说,如果单个页的剩余空间很小,就没空间用来扩展栏位长度,所以表会进行重新排列,也就是重构。我不太明白为什么重构会产生大量日志(类似于往表中插入大量记录),觉得只是底层存储上数据重新排列,逻辑结构发生变化,并没有发生数据的实质改变啊。
Answer3
informix数据库的表发生重构时,相当于另外新建这个表,不是在原来的存储空间上简单重排,所以对剩余空间还有要求,剩余空间必须足够新建此表所需,当然完成后源表的存储空间会被释放,也因此在这个过程中会使用大量的逻辑日志。
 
Question4
有点乱了,呵呵。
如果页的剩余空间足够,应该就不会发生重构啊?? 
Answer4
前面没说清楚,不好意思。
我说的页的剩余空间是指每个页中的剩余空间,而不是指dbspace的剩余空间,比如一个页2K,记录的rowsize是800,每页放两条记录,rowsize增加到900时,每页还是两条记录,这种情况下不会发生重构,但如果rowsize增加到1100,每个页只能放1条记录了,这种情况下就要发生重构。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24172176/viewspace-751019/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/24172176/viewspace-751019/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值