暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DB2 大表拆分方案

原创 jiayou 2023-08-27
473

大表拆分方案

1、变更前提描述

当前大表,未作拆分,查询效率和维护难度较大,对此需要调整为分区表,均按照木木字段已月为单位分拆
变更前注意表空间文件系统使用情况,确保空间足够
2、变更方案

A停止相关业务对该表的访问,并导出ddl语句

db2look -d dbname -t s.t -e -o t.ddl
B重命名表,后缀为bak-date

db2 “rename table s.t to s.t_bak20210101”

C新建表,并重新导出表结构核对字段、索引

db2 -tvf t_new.ddl
db2look -d dbname -t s.t -e -o
D定义查询原表的游标,然后load到对应的新表中

db2 " declare c1 for select * from s.t_bak20210101"
db2 “load from cl of cursor insert into s.t”

db2 “select count(1) from s.t”
E对新表收集统计信息更新

db2 “runstats on table s.t and sampled detailed indexes all”
进行业务验证

F系统运行正常一段时间,之后删除原表

db2 “drop table s.t_bak20210101”
G降低对应表空间高水位

db2 “alter tablespace xxxx reduce max”
3、风险以及回退

操作风险较低,提前在测试换件验证上诉拆分步骤,生产load导入时注意确保无数据拒绝
回退分步骤
当新表使用异常时候,可以直接drop新表,然后重命名旧表

db2 “rename table s.t_bak20210101 to s.t”

建表语句说明

在导出ddl中增加 “partition by rang(xxx) (starting (‘1/1/2018’) ending(‘12/31/2049’) every 1 month)”
语句按照月份区分,根据时间调整,但必须确保涵盖当前以及未来的所有可能的数据范围。
并修改索引名称,增加_new后缀。

查询当前数据时间范围参考

db2 “select min(xxx) from s.t with ur”
db2 “select max(xxx) from s.t with ur”

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论