当前位置: 首页 > article >正文

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;

相关文章:

Oracle DROP、TRUNCATE 和 DELETE 原理

在 Oracle 11g 中&#xff0c;DROP、TRUNCATE 和 DELETE 是三种不同的数据清理操作&#xff0c;它们的底层原理和适用场景有显著差异 1. DELETE 的原理 类型&#xff1a;DML&#xff08;数据操作语言&#xff09; 功能&#xff1a;逐行删除表中符合条件的数据&#xff0c;保留…...

ida 使用记录

文章目录 伪代码-汇编hexstring快捷键 伪代码-汇编 流程图界面——F5——伪代码界面——再点Tab——流程图界面——再按空格——汇编界面流程图界面——空格——汇编界面 hex view - open subviews - hex dump string view - open subviews - string快捷键&#xff1a; sh…...

【连载3】基础智能体的进展与挑战综述

基础智能体的进展与挑战综述 从类脑智能到具备可进化性、协作性和安全性的系统 【翻译团队】刘军(liujunbupt.edu.cn) 钱雨欣玥 冯梓哲 李正博 李冠谕 朱宇晗 张霄天 孙大壮 黄若溪 2. 认知 人类认知是一种复杂的信息处理系统&#xff0c;它通过多个专门的神经回路协调运行…...

MacOs java环境配置+maven环境配置踩坑实录

oracl官网下载jdk 1.8的安装包 注意可能需要注册&#xff01;&#xff01;&#xff01; 下载链接&#xff1a;下载地址点击 注意晚上就不要下载了 报错400 &#xff01;&#xff01;&#xff01; 1.点击安装嘛 2.配置环境变量 export JAVA_HOME/Library/Java/Java…...

【Git】--- 企业级开发流程

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; Git 本篇博客我们讲解Git在企业开发中的整体流程&#xff0c;理解Git在实际企业开发中的高效设计。 &#x1f3e0; 企业级开发流程 一个软件从零开始到最…...

SAP系统客户可回收包材库存管理

问题&#xff1a;客户可回收包材库存管理 现象&#xff1a;回收瓶无库存管理&#xff0c;在库数量以及在客户的库存数量没有统计&#xff0c;管理混乱。 解决方法&#xff1a; 客户可回收包装材料在SAP有标准的解决方案&#xff0c;在集团尚未启用该业务&#xff0c;首先…...

蓝桥杯嵌入式历年省赛客观题

一.第十五届客观题 第十四届省赛 十三届 十二届...

JDK的卸载与安装

卸载JDK 删除java的1安装目录 卸载JAVA_HOME 删除path下关于java的路径 java -version查看 安装JDK 百度搜索JDK&#xff0c;找到下载地址 同意协议 下载电脑对应版本 双击安装 记住安装路径 配置环境变量 我的电脑–>右键–>属性–>高级系统设置 环境变…...

八股系列(分布式与微服务)持续更新!

八股系列&#xff08;分布式与微服务&#xff09; 分布式系统的概念 分布式系统是由多个节点组成&#xff0c;节点之间通过网络协议传递数据&#xff0c;对外表现为一个统一的整体&#xff0c;一个节点可以是一台机器或一个进程&#xff1b;分布式系统的核心功能 资源共享&…...

【源码】Mybatis源码

引言​ MyBatis 作为 Java 开发中广泛使用的持久层框架&#xff0c;其高效且灵活的数据库操作能力备受开发者青睐。在日常开发中&#xff0c;我们熟练运用 MyBatis 的各种功能来实现数据持久化&#xff0c;但深入探究其源码&#xff0c;能让我们更透彻地理解它的工作原理&#…...

解决2080Ti使用节点ComfyUI-PuLID-Flux-Enhanced中遇到的问题

使用蓝大的工作流《一键同时换头、换脸、发型、发色之双pulid技巧》 刚开始遇到的是不支持bf16的错误 根据《bf16 is only supported on A100 GPUs #33》中提到&#xff0c;修改pulidflux.py中的dtype 为 dtype torch.float16 后&#xff0c;出现新的错误&#xff0c;这个…...

LabVIEW驱动开发的解决思路

在科研项目中&#xff0c;常面临将其他语言开发的定制采集设备驱动转换为 LabVIEW 适用形式的难题。特别是当原驱动支持匮乏、开发人员技术支持不足时&#xff0c;如何抉择解决路径成为关键。以下提供具体解决思路&#xff0c;助力高效解决问题。 ​ 一、评估现有驱动死磕的可…...

[英语] abominable、detestable、despicable、odious、contemptible的区别

关于 abominable 与其他近义词的辨析 abominable 的核心含义是“因极端恶劣或违背道德而令人憎恶”&#xff0c;其情感强度较高&#xff0c;常带有道德批判意味。以下是其与常见近义词的区别及典型用法&#xff1a; 1. abominable vs. detestable abominable&#xff1a;强调…...

七、Qt框架编写的多线程应用程序

一、大纲 学习内容&#xff1a;使用两个线程&#xff0c;分别点击两个按钮&#xff0c;触发两个不同的效果 所需控件&#xff1a;两个button、三个label 涉及知识点&#xff1a;多线程、Qt的connect机制、定时器、互斥锁 需求&#xff1a; 1&#xff0c;多线程定时计数&#x…...

MATLAB求和∑怎么用?

MATLAB求和∑怎么用&#xff1f; 一&#xff1a;题目&#xff1a;求下列方程的和 二、代码如下 1.syms函数 &#xff08;方法一) 代码如下&#xff08;示例&#xff09;&#xff1a; 1. syms x 2. symsum((x.^22*x).^3,1,100) 3. 2.直接用循环 (方法二) 代码如下&am…...

项目二 使用miniedit创建拓扑

一、项目需求分析&#xff1a; 1. 在ubuntu的桌面环境中运行Mininet的图形化界面2. Mininet图形化界面中搭建拓扑并设置相关的设备和链路属性3. Floodlight中查看拓扑4. 完成Mininet的测试 二、项目实施步骤 1. 运行Mininet图形化界面 在“~/mininet/examples”目录下有一m…...

Docker 镜像 的常用命令介绍

拉取镜像 $ docker pull imageName[:tag][:tag] tag 不写时&#xff0c;拉取的 是 latest 的镜像查看镜像 查看所有本地镜像 docker images or docker images -a查看完整的镜像的数字签名 docker images --digests查看完整的镜像ID docker images --no-trunc只查看所有的…...

0x02.Redis 集群的实现原理是什么?

回答重点 Redis 集群&#xff08;Redis cluster&#xff09;是通过多个 Redis 实例组成的&#xff0c;每个主节点实例负责存储部分的数据&#xff0c;并且可以有一个或多个从节点作为备份。 具体是采用哈希槽&#xff08;Hash Slot&#xff09;机制来分配数据&#xff0c;将整…...

浏览器多开

使用浏览器的用户功能&#xff0c;创建多个用户即可完成浏览器多开的需求&#xff0c;插件等相对独立 需要命名 然后就可以通过多个用户切换来实现多开了&#xff0c;不同任务选择不同用户...

Python中NumPy的逻辑和比较

在数据科学和科学计算领域&#xff0c;NumPy是一个不可或缺的Python库。它提供了高效的多维数组对象以及丰富的数组操作函数&#xff0c;其中逻辑和比较操作是NumPy的核心功能之一。通过灵活运用这些操作&#xff0c;我们可以轻松实现数据筛选、条件判断和复杂的数据处理任务。…...

20250412_代码笔记_CVRProblemDef

文章目录 前言一、get_random_problems 函数分析二、augment_xy_data_by_8_fold 函数分析代码 前言 该笔记分析代码的功能是生成随机VRP问题的数据&#xff0c;包含仓库坐标、节点坐标和节点需求。 对该代码进行改进 20250412-代码改进-拟蒙特卡洛 一、get_random_problems 函…...

机器学习(3)——决策树

文章目录 1. 决策树基本原理1.1. 什么是决策树&#xff1f;1.2. 决策树的基本构成&#xff1a;1.3. 核心思想 2. 决策树的构建过程2.1. 特征选择2.1.1. 信息增益&#xff08;ID3&#xff09;2.1.2. 基尼不纯度&#xff08;CART&#xff09;2.1.3. 均方误差&#xff08;MSE&…...

Redis常用数据结构和应用场景

一、前言 Redis提供了多种数据结构&#xff0c;每种结构对应不同的应用场景。本文对部分常用的核心数据结构和典型使用场景作出介绍。 二、String&#xff08;字符串&#xff09; 特点&#xff1a;二进制安全&#xff0c;可存储文本、数字、序列化对象等。场景&#xff1a; 缓…...

【转载翻译】使用Open3D和Python进行点云处理

转自个人博客&#xff1a;【转载翻译】使用Open3D和Python进行点云处理 转载自&#xff1a;Point Cloud Processing with Open3D and Python 本文由 Carlos Melo 发布于2024年2月12日 本文很适合初学者对三维处理、点云处理以及Open3D库进行初步了解 另外&#xff0c;本文是基于…...

用户登录不上linux服务器

一般出现这种问题&#xff0c;重新用root用户修改lsy用户的密码即可登录&#xff0c;但是当修改了还是登录不了的时候&#xff0c;去修改一个文件用root才能修改&#xff0c; 然后在最后添加上改用户的名字&#xff0c;例如 原本是只有user的&#xff0c;现在我加上了lsy了&a…...

SQL 全文检索原理

全文检索(Full-Text Search)是SQL中用于高效搜索文本数据的技术&#xff0c;与传统的LIKE操作或简单字符串比较相比&#xff0c;它能提供更强大、更灵活的文本搜索能力。 基本概念 全文检索的核心思想是将文本内容分解为可索引的单元(通常是词或词组)&#xff0c;然后建立倒排…...

dcsdsds

我将为您在页面顶部添加欢迎内容&#xff0c;同时保持整体风格的一致性。以下是修改后的代码&#xff0c;主要修改了模板部分和对应的样式&#xff1a; vue 复制 <template><div class"main-wrapper"><!-- 新增欢迎部分 --><div class"…...

FISCO BCOS区块链Postman接口测试:高级应用与实战技巧 [特殊字符]

引言:为什么Postman是FISCO BCOS测试的利器? 在区块链开发领域,接口测试是确保系统稳定性和安全性的关键环节。作为国产领先的联盟链平台,FISCO BCOS在金融、政务、供应链等多个领域得到广泛应用。而Postman作为一款功能强大的API测试工具,凭借其直观的图形界面和丰富的测…...

KWDB创作者计划—KWDB场景化创新实践:多模态数据融合与边缘智能的突破性应用

引言&#xff1a;AIoT时代的数据库范式重构 在工业物联网设备数量突破千亿、边缘计算节点覆盖率达75%的2025年&#xff0c;传统数据库面临多模态数据处理效率低下、边缘端算力利用率不足、跨域数据协同困难等核心挑战。KWDB&#xff08;KaiwuDB Community Edition&#xff09;通…...

风暴之眼:在AI重构的数字世界重绘职业坐标系

硅谷的某个深夜&#xff0c;GitHub Copilot在程序员的注视下自动生成出完美代码&#xff0c;这个场景正在全球数百万开发者的屏幕上同步上演。当AI生成的代码通过图灵测试&#xff0c;当机器学习模型开始理解业务需求&#xff0c;一个根本性命题浮出水面&#xff1a;在人类亲手…...