Oracle DROP、TRUNCATE 和 DELETE 原理

在 Oracle 11g 中,DROPTRUNCATE 和 DELETE 是三种不同的数据清理操作,它们的底层原理和适用场景有显著差异

1. DELETE 的原理

类型:DML(数据操作语言)
功能:逐行删除表中符合条件的数据,保留表结构。
原理

  • 逐行操作:逐行标记删除,记录每行的删除操作到 undo 段(支持回滚)。

  • 事务性:需显式提交(COMMIT)或回滚(ROLLBACK),未提交前数据可恢复。

  • 高水位线(HWM):不降低表的 HWM,已删除数据占用的空间仍被表保留,后续插入可能重用这些空间。

  • 触发器触发:会触发 BEFORE DELETE 和 AFTER DELETE 触发器。

DELETE FROM employees WHERE department_id = 10;  -- 删除部门 10 的员工
ROLLBACK;  -- 可回滚

适用场景

  • 删除部分数据(带 WHERE 条件)。

  • 需要事务控制或触发器的场景。

注意事项

  • 性能问题:删除大量数据时生成大量 undo 日志 和 redo 日志,可能导致性能瓶颈。

  • 空间未释放:表占用的存储空间不会立即释放。

2. TRUNCATE 的原理

类型:DDL(数据定义语言)
功能:快速删除表中所有数据,保留表结构。
原理

  • 段级操作:直接释放表的 数据段(删除所有数据页),重置 HWM 为初始值。

  • 非事务性:隐式提交,不可回滚(执行后立即生效)。

  • 不记录日志:仅记录少量元数据操作日志(不记录每行删除的 undo/redo 日志)。

  • 不触发触发器:不会触发任何 DELETE 触发器。

TRUNCATE TABLE employees;  -- 清空表数据

适用场景

  • 快速清空大表所有数据。

  • 需要释放表占用的存储空间。

注意事项

  • 权限要求:需要 DROP ANY TABLE 权限。

  • 无法恢复:数据无法通过回滚恢复,需依赖备份。

  • 外键约束:若表是其他表的外键父表,需先禁用外键约束。

3. DROP 的原理

类型:DDL(数据定义语言)
功能:彻底删除表结构及数据,释放所有关联对象(索引、约束等)。
原理

  • 元数据删除:从数据字典(DBA_OBJECTSDBA_TABLES 等)中删除表的定义。

  • 段释放:释放表及其索引、LOB 列等占用的所有存储空间。

  • 非事务性:隐式提交,不可回滚。

DROP TABLE employees PURGE;  -- 彻底删除表(跳过回收站)

适用场景

  • 永久删除不再需要的表。

  • 清理测试环境中的临时表。

注意事项

  • 回收站机制:默认情况下,表会被移动到回收站(RECYCLEBIN),可通过 FLASHBACK TABLE 恢复。

  • 依赖对象:删除表时会级联删除索引、触发器等依赖对象。

三者的核心对比

特性DELETETRUNCATEDROP
操作类型DMLDDLDDL
事务支持支持回滚隐式提交,不可回滚隐式提交,不可回滚
日志生成生成大量 undo/redo 日志仅记录元数据日志仅记录元数据日志
性能慢(逐行操作)快(段级操作)快(元数据删除)
存储空间释放不释放(HWM 不变)释放(HWM 重置)完全释放
触发器触发触发不触发不触发
恢复方式事务回滚需备份恢复回收站或备份恢复
语法示例DELETE FROM table WHERETRUNCATE TABLE tableDROP TABLE table

4.如何选择?

  • 删除部分数据且需回滚 → DELETE

  • 快速清空大表所有数据 → TRUNCATE

  • 彻底删除表及结构 → DROP

注意事项

  • TRUNCATE 与分区表

    • 可针对单个分区操作:

      ALTER TABLE sales TRUNCATE PARTITION p2020;
  • DROP 的回收站机制

    • 恢复表:

      FLASHBACK TABLE employees TO BEFORE DROP;  -- 从回收站恢复
  • DELETE 的性能优化

    • 分批删除减少 undo 压力:

      BEGINLOOPDELETE FROM employees WHERE department_id = 10 AND ROWNUM <= 10000;EXIT WHEN SQL%ROWCOUNT = 0;COMMIT;END LOOP;
      END;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/78777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PCIe 5.0光学SSD原型问世!

近日&#xff0c;Kioxia Corporation&#xff08;铠侠&#xff09;、AIO Core Co., Ltd. 和 Kyocera Corporation&#xff08;京瓷&#xff09;联合宣布成功开发了一款支持 PCIe 5.0 接口的光学 SSD 原型。该技术旨在通过光接口替换传统的电接口&#xff0c;从而显著增加计算设…

SQL 查询中涉及的表及其作用说明

SQL 查询中涉及的表及其作用说明&#xff1a; 涉及的数据库表 表名别名/用途关联关系dbo.s_orderSO&#xff08;主表&#xff09;存储订单主信息&#xff08;订单号、日期、客户等&#xff09;dbo.s_orderdetailSoD&#xff08;订单明细&#xff09;通过 billid SO.billid 关…

C++学习之金融类安全传输平台项目git

目录 1.知识点概述 2.版本控制工具作用 3.git和SVN 4.git介绍 5.git安装 6.工作区 暂存区 版本库概念 7.本地文件添加到暂存区和提交到版本库 8.文件的修改和还原 9.查看提交的历史版本信息 10.版本差异比较 11.删除文件 12.本地版本管理设置忽略目录 13.远程git仓…

【HCIP】GRE VPN实验笔记

一、实验拓扑 二、实验要求 1、按照图示配置IP地址 2、在R1和R3上配置默认路由使公网区域互通 3、在R1和R3上配置GRE VPN&#xff0c;使两端私网能够互相访问&#xff0c;Tunnel口IP地址如图 4、在R1和R3上配置RIPv2或者ospf或者静态&#xff0c;来传递两端私网路由 三、实…

大模型——Llama Stack快速入门 部署构建AI大模型指南

Llama Stack快速入门 部署构建AI大模型指南 介绍 Llama Stack 是一组标准化和有主见的接口,用于如何构建规范的工具链组件(微调、合成数据生成)和代理应用程序。我们希望这些接口能够在整个生态系统中得到采用,这将有助于更轻松地实现互操作性。 Llama Stack 定义并标准化…

ALOPS智能化运维管理平台

AIOps&#xff08;Artificial Intelligence for IT Operations&#xff09;即智能运维&#xff0c;是将人工智能技术应用于 IT 运维管理领域&#xff0c;以实现自动化、智能化的运维决策和管理。以下是关于 AIOps 的详细介绍&#xff1a; 核心能力 数据收集与整合&#xff1a…

C语言超详细指针知识(二)

在上一篇有关指针的博客中&#xff0c;我们介绍了指针的基础知识&#xff0c;如&#xff1a;内存与地址&#xff0c;解引用操作符&#xff0c;野指针等&#xff0c;今天我们将更加深入的学习指针的其他知识。 1.指针的使用和传址调用 1.1strlen的模拟实现 库函数strlen的功能是…

一种替代DOORS在WORD中进行需求管理的方法 (二)

一、前景 参考&#xff1a; 一种替代DOORS在WORD中进行需求管理的方法&#xff08;基于WORD插件的应用&#xff09;_doors aspice-CSDN博客 二、界面和资源 WORD2013/WORD2016 插件 【已使用该工具通过第三方功能安全产品认证】&#xff1a; 1、 核心功能 1、需求编号和跟…

设计模式 Day 6:深入讲透观察者模式(真实场景 + 回调机制 + 高级理解)

观察者模式&#xff08;Observer Pattern&#xff09;是一种设计结构中最实用、最常见的行为模式之一。它的魅力不仅在于简洁的“一对多”事件推送能力&#xff0c;更在于它的解耦能力、模块协作设计、实时响应能力。 本篇作为 Day 6&#xff0c;将带你从理论、底层机制到真实…

文献总结:AAAI2025-UniV2X-End-to-end autonomous driving through V2X cooperation

UniV2X 一、文章基本信息二、文章背景三、UniV2X框架1. 车路协同自动驾驶问题定义2. 稀疏-密集混合形态数据3. 交叉视图数据融合&#xff08;智能体融合&#xff09;4. 交叉视图数据融合&#xff08;车道融合&#xff09;5. 交叉视图数据融合&#xff08;占用融合&#xff09;6…

2025蓝桥杯python A组题解

真捐款去了&#xff0c;好长时间没练了&#xff0c;感觉脑子和手都不转悠了。 B F BF BF 赛时都写假了&#xff0c; G G G 也只写了爆搜。 题解其实队友都写好了&#xff0c;我就粘一下自己的代码&#xff0c;稍微提点个人的理解水一篇题解 队友题解 B 思路&#xff1a; 我…

免费送源码:Java+ssm+MySQL 校园二手书销售平台设计与实现 计算机毕业设计原创定制

摘 要 信息化社会内需要与之针对性的信息获取途径&#xff0c;但是途径的扩展基本上为人们所努力的方向&#xff0c;由于站在的角度存在偏差&#xff0c;人们经常能够获得不同类型信息&#xff0c;这也是技术最为难以攻克的课题。针对校园二手书销售平台等问题&#xff0c;对校…

工业科学级天文相机:跨界融合的高精密成像解决方案

随着国内科技的快速发展&#xff0c;工业相机领域正悄然兴起一场"天文级"的技术革命。这类兼具工业设备可靠性与天文观测精度的特殊相机&#xff0c;正在半导体制造、天文观测、空间探测等领域开辟新的应用疆域。其核心技术突破不仅体现在传感器性能的提升&#xff0…

论文阅读笔记——Multi-Token Attention

MTA 论文 在 Transformer 中计算注意力权重时&#xff0c;仅依赖单个 Q 和 K 的相似度&#xff0c;无法有效捕捉多标记组合信息。&#xff08;对于 A、B 两个词&#xff0c;单标记注意力需要分别计算两个词的注意力分数&#xff0c;再通过后处理定位共同出现的位置或通过多层隐…

301.找出3位偶数

2094. 找出 3 位偶数 - 力扣&#xff08;LeetCode&#xff09; class Solution {List<Integer> resnew ArrayList<>();List<Integer> linew ArrayList<>();public int[] findEvenNumbers(int[] digits) {Arrays.sort(digits);boolean[] numsnew boolea…

【KWDB 创作者计划】第二卷:开发者实战篇

​KWDB技术白皮书卷二&#xff1a;开发者实战篇 ​1. 自然语言到量子查询的编译系统 1.1 NL2QSQL翻译引擎架构 运行时流程图解&#xff1a; ┌──────────────────────┐ ┌───────────────────┐ ┌─────────────…

前端工程化之新晋打包工具

新晋打包工具 新晋打包工具前端模块工具的发展历程分类初版构建工具grunt使用场景 gulp采用管道机制任务化配置与api简洁 现代打包构建工具基石--webpack基于webpack改进的构建工具rollup 推荐举例说明package.jsonrollup.config.mjsmy-extract-css-rollup-plugin.mjssrc/index…

ai软件UI自动化

在AI与UI自动化结合的场景中,通常涉及计算机视觉(CV)、自然语言处理(NLP)和机器学习(ML)等技术。以下是实现AI驱动UI自动化的关键方向、工具和步骤: ‌一、核心应用场景‌ ‌元素定位增强‌ ‌问题‌:传统工具依赖XPath/CSS选择器,易因UI变化失效。‌AI方案‌:CV识别…

关于 C++ 中 cin 对象和 EOF 的详细解释

【DeepSeek提问】 给解释一下下面这段话&#xff08;C编程&#xff09; cin是 iostream 类的一个对象实例&#xff0c;如果输入正常&#xff0c; cin 将返回本身。 举个例子&#xff1a;cin>x>>y, 如果 cin>>x 读入正常&#xff0c;那么将返回cin, 相当于后面继…

Vue 3 和 Vue 2 的区别及优点

Vue.js 是一个流行的 JavaScript 框架&#xff0c;广泛用于构建用户界面和单页应用。自 Vue 3 发布以来&#xff0c;很多开发者开始探索 Vue 3 相较于 Vue 2 的新特性和优势。Vue 3 引入了许多改进&#xff0c;优化了性能、增强了功能、提升了开发体验。本文将详细介绍 Vue 2 和…