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

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


推荐阅读
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文介绍了在安装或运行 Python 项目时遇到的 'ModuleNotFoundError: No module named setuptools_rust' 错误,并提供了解决方案。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
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社区 版权所有