加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

db2 对大数据量作delete操作不记日志的方法

(2018-03-01 16:27:02)
分类: 数据库
DB2 delete大数据表中的部分数据经常会产生很大日志,造成数据库日志空间满的情况。
现总结几种解决方法如下:
1、细分delete区间
   增加where条件,确保每次delete事务只删除少量数据,以执行次数换执行安全;
2、delete期间不记日志
   
-- db2 delete 大表不写日志操作  
1.update command options using c off  -- //关闭自动提交   
2.alter table MARPT.RPT_DIM_U_ORG_INX_M_CURR_CUS_PRO_TBK  activate not logged INITIALLY //设置不记日志. INITIALLY必须大写!!!  
3.delete from MARPT.RPT_DIM_U_ORG_INX_M_CURR_CUS_PRO_TBK -- 删除数据 
4.commit//手动提交   
5.update command options using c on//打开自动提交

3、增加日志文件大小
   db2 update db cfg for dbname using LOGFILSIZ 262144
   db2 update db cfg for dbname using LOGPRIMARY 20
4、小表设计——根本解决之道
   在数据表设计时,就考虑将可能存放大数据的表根据时间或其他字段拆分为很多小表,这样每次涉及数据删除都用/dev/null直接清空,杜绝删除操作。

注:
delete操作执行期间,相关表会加E锁,只允许其他应用以WITH UR读方式进行访问。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有