热门标签 | 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.

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


推荐阅读
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 本文探讨了 Objective-C 中的一些重要语法特性,包括 goto 语句、块(block)的使用、访问修饰符以及属性管理等。通过实例代码和详细解释,帮助开发者更好地理解和应用这些特性。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细介绍了 MySQL 中 LAST_INSERT_ID() 函数的使用方法及其工作原理,包括如何获取最后一个插入记录的自增 ID、多行插入时的行为以及在不同客户端环境下的表现。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 文件描述符、文件句柄与打开文件之间的关联解析
    本文详细探讨了文件描述符、文件句柄和打开文件之间的关系,通过具体示例解释了它们在操作系统中的作用及其相互影响。 ... [详细]
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社区 版权所有