db2中使用not logged initially

 最近使用delete from删除较多记录时,由于日志文件小,系统报错无法删除。所以想寻求一种不写日志文件的删除方法。

在网上查了一下,Oracle提供一种叫trancate的函数,可以清空表中记录而不写日志文件。而db2提供一种NLI(not logged initially)模式,但是需要在建表时加not logged initially属性。如对表进行insert、update或delete操作不想写入日志文件时,先ALTER TABLE <name> ACTIVATE NOT LOGGED INITIALLY,然后在执行sql语句,执行完后最好commit一下,恢复原设置。

但是这样做有缺点(摘至ibm网站):

1,如果有一条语句失败,那么这个表将被标记为不可访问的,并且需要被删除掉。这与其他恢复问题(请参阅 SQL Reference 关于 Create Table 的讨论)一起使得 NLI 在很多情况下不能成为可行的方法。

 
2,在工作单元最后进行的提交,必须等到在此工作单元内涉及的所有脏页都被写到磁盘之后才能完成。这意味着这种提交要占用大量的时间。实际上, test 6 和 7已表明,如果没有积极地进行页清除,那么在使用 NLI 的情况下,Insert 加上提交所耗费的总时间要更长一些。不过,test 8 表明,将 NLI 与积极的页清除一起使用的时候,可以大大减少耗时。如果使用 NLI,就要瞪大眼睛盯紧提交;操作所耗费的时间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值