热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

需要从具有1.5TB数据的表中清除三分之一的数据-Needtopurgeonethirdofdatafromatablehaving1.5TBdata

Haveaoracletablewithalmost1.5TBdatainit.Needtopurgeatleast0.5TBdatafromit.Thisi

Have a oracle table with almost 1.5 TB data in it. Need to purge atleast 0.5 TB data from it. This is a Production table, and have significant number of write commands running on it. What is the best way and fastest way to purge this data.

有一个带有近1.5 TB数据的oracle表。需要从中清除至少0.5 TB的数据。这是一个Production表,并且在其上运行了大量的写命令。清除此数据的最佳方法和最快方法是什么。

2 个解决方案

#1


2  

"Purge" = "remove" = "delete", I presume.

我猜想,“清除”=“删除”=“删除”。

You have several options; here are some of them:

你有几个选择;这里是其中的一些:

  • Is the table partitioned? I guess not; otherwise, you'd just truncate (or drop) partitions you don't need any more, and it would be fast

    表分区了吗?我猜不会;否则,你只是截断(或删除)你不再需要的分区,而且速度很快

    • can you partition it now?
    • 你现在可以分区吗?

  • Another option is to literally delete those rows. It'll create a large undo.

    另一种选择是逐字删除这些行。它会创建一个大的撤消。

    • this option is probably quite slow
    • 这个选项可能很慢

  • Or, use CTAS (Create Table As Select) and create a new table with rows you'd want to keep; then truncate (or, if you can afford it, drop) the original table and move rows back (or, if you dropped it, rename newly created table to the old, original name). Depending on foreign key constraints, that might not be that simple.

    或者,使用CTAS(Create Table As Select)创建一个包含您想要保留的行的新表;然后截断(或者,如果你能负担得起,删除)原始表并将行移回(或者,如果你删除它,将新创建的表重命名为旧的原始名称)。根据外键约束,可能不那么简单。

    • this one takes additional space on a disk. Do you have it? What about constraints?
    • 这个占用磁盘上的额外空间。你有吗?限制怎么样?

  • Or, delete rows in chunks, using loop in a PL/SQL procedure. In order to save some undo space, commit within a loop (not too frequently, though). ORA-01555 (snapshot too old) might appear

    或者,使用PL / SQL过程中的循环删除块中的行。为了节省一些撤消空间,在循环内提​​交(但不要太频繁)。可能会出现ORA-01555(快照太旧)

    • deleting piece-by-piece is OK if you aren't worried about "all or nothing". What if delete fails? Will it affect anything else? How?
    • 如果您不担心“全有或全无”,可以逐条删除。如果删除失败怎么办?它会影响其他什么吗?怎么样?

Which one is the best? That's a million dollars question, and I don't have an answer to it. If possible, import that table into your testing environment and ... well, test those options. Testing in production isn't recommended, right?

哪一个是最好的?这是一个百万美元的问题,我没有答案。如果可能,将该表导入您的测试环境中......并且,测试这些选项。不推荐在生产中进行测试,对吗?

#2


0  

We have the same problem at work. Our plan of attack is to do an online redefinition to partition the table. Once that is done, the relevant partitions can be dropped.

我们在工作中遇到同样的问题。我们的攻击计划是进行在线重新定义以对表进行分区。完成后,可以删除相关分区。

We are currently setting up a copy of the database on a test machine to test the approach.

我们目前正在测试机器上设置数据库的副本以测试该方法。


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
author-avatar
潇然free
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有