容量很大的库,一般采取什么策略来进行清理?是定期删除,还是使用分区表?

对于数据库容量很大的库,一般采取什么策略来进行清理?是定期删除,还是使用分区表?不同的方案对日志需求,备份恢复策略有什么影响?定期删除使用load还是delete的区别?显示全部

对于数据库容量很大的库,一般采取什么策略来进行清理?是定期删除,还是使用分区表?不同的方案对日志需求,备份恢复策略有什么影响?
定期删除使用load还是delete的区别?

收起
参与34

查看其它 4 个回答leilin的回答

leilinleilin数据库管理员IBM

数据清理的策略和业务直接相关,不一定按业务时间分区,清理时做分区detach就可以,在数据仓库和分析领域,历史数据归档通常却是可以采用分区detach方式的。

删除(delete)通常消耗大量的日志,而分区detach则不会。另外一个可选的方案是MDC fast rollout, 通过设置db2set DB2_MDC_ROLLOUT=DEFERRED实现,当delete 语句的where条件中只有MDC字段限定时,可以实现快速删除并且只记很少的日志。

对于联机系统,如果一次性删除大量数据可能导致锁升级,影响交易的并发性,建议多次小批量删除,通常的方法是多次执行:delete from (select * from <table name> where ... fetch first 10000 rows only);

detele不影响备份恢复策略;detach 是DDL操作,影响了表的定义,也就影响了表空间的MRT(Minimum Recovery Time),PIT恢复时必须恢复到detach操作时间点以后。

表清空可以采用load/import (load/import from /dev/null of del replace into <table name>) ,或是truncate (truncate table <table name> immediate), 或是关闭日志的操作(alter table <table name> activate not logged with empty table),也可以是是带任何条件的delete。除了delete需要记录大量的日志外,别的操作记录的日志很少或不记日志。

IT其它 · 2017-08-18
浏览2530

回答者

leilin
数据库管理员IBM

leilin 最近回答过的问题

回答状态

  • 发布时间:2017-08-18
  • 关注会员:6 人
  • 回答浏览:2530
  • X社区推广