问题描述
嗨,汤姆,
我们需要根据日期范围或行数将大量数据中的数据存档到某些备份表中。
根据我提取的统计信息,这些表包含大约275毫米记录的数据。
您能否让我知道将记录推送到备份表中的最佳有效方法?
请让我知道我需要处理如此大的表的任何额外提示。
我们需要根据日期范围或行数将大量数据中的数据存档到某些备份表中。
根据我提取的统计信息,这些表包含大约275毫米记录的数据。
您能否让我知道将记录推送到备份表中的最佳有效方法?
请让我知道我需要处理如此大的表的任何额外提示。
专家解答
分区通常是最好的方法,因为您通常可以通过简单地执行 “exchange” 命令来归档旧数据来归档数据。
在这种情况下,数据不会 “移动”,它只是通过数据字典操作从表中 “分离”。
但是,如果这不是一种选择,那么直接模式操作和潜在的并行操作是移动大量数据的最有效方法,即:
创建表BACKUP_TABLE parallel as
从MY_TABLE中选择/* 并行 */
[档案标准]
或者
alter会话启用并行dml;
将/* 追加并行 */插入BACKUP_TABLE
从MY_TABLE中选择/* 并行 */
[档案标准]
But copying the data is the easy part...the big question then becomes - how do you efficiently *remove* the data from your active table. DELETE's are very expensive, so deleting millions of rec或者ds can take a *long* time and burn a lot of resources.
It may often be the case that it is m或者e efficient to flip the process on its head, and write a query that saves the rows you want to *keep*, ie
创建表NEW_MY_TABLE为
从我的表中选择 *
其中 [非档案标准]
将NEW_MY_TABLE重命名为MY_TABLE;
(然后将赠款等从旧表复制到新表)。
但在一般意义上:
“请让我知道处理如此大的表所需的任何其他提示。”
分区 .... 分区
在这种情况下,数据不会 “移动”,它只是通过数据字典操作从表中 “分离”。
但是,如果这不是一种选择,那么直接模式操作和潜在的并行操作是移动大量数据的最有效方法,即:
创建表BACKUP_TABLE parallel as
从MY_TABLE中选择/* 并行 */
[档案标准]
或者
alter会话启用并行dml;
将/* 追加并行 */插入BACKUP_TABLE
从MY_TABLE中选择/* 并行 */
[档案标准]
But copying the data is the easy part...the big question then becomes - how do you efficiently *remove* the data from your active table. DELETE's are very expensive, so deleting millions of rec或者ds can take a *long* time and burn a lot of resources.
It may often be the case that it is m或者e efficient to flip the process on its head, and write a query that saves the rows you want to *keep*, ie
创建表NEW_MY_TABLE为
从我的表中选择 *
其中 [非档案标准]
将NEW_MY_TABLE重命名为MY_TABLE;
(然后将赠款等从旧表复制到新表)。
但在一般意义上:
“请让我知道处理如此大的表所需的任何其他提示。”
分区 .... 分区
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




