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

Oracle 关于数据仓库表的性能问题

ASKTOM 2020-04-28
180

问题描述

嗨,

我们有一张表,它有大约13年的历史,而且还在不断增长。此表按列表 (2个值) 进行分区,并按列表w.r.t再次细分到报告日期。表的当前大小为5 TB。
每个月都会加载数据 (总是在月底)。

他们需要更新完整历史记录表的业务需求很少。发布这些更新,看到的速度很慢,而且总是支离破碎。请注意,我们总是执行整个表的导出和导入 (需要5天) 或alter table移动子分区,大约需要40个小时。

我想知道是否有更好的方法来更新此历史记录表,以避免这些性能问题。从DBA的角度来看,我们正在为年份创建单独的表空间w.r.t。

我知道更新会破坏表,这导致了性能问题。我希望有更好的方法来更新这些记录,并减少对性能的影响。

问候
阿什什

专家解答

There are few business requirement where they need to update the table of the complete history


这确实意味着实际上更新5TB中的每一行?这听起来像是一个设计问题,因为数据仓库的基本准则之一是您加载,并且理想情况下永远不会更改历史记录。这不仅是因为性能原因,还因为它使您过去所做的任何报告都对原始信息无效。数据仓库通常具有时态设计,以确保我们永远不会改变过去-我们只是在将来针对它进行调整。

无论如何,在Oracle中操作数据的最快方法是创建它。这总是比删除或更改它更快。

因此,如果我必须更改5TB的数据,我将加载 * 新 * 组5TB的数据 (具有我想要的更改),然后使用exchange分区将旧的与新的交换。

但是,在不断增长的表上改变 * 所有 * 的历史... 最终会引起越来越多的问题


文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论