首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Truncate And Delete

Truncate And Delete

作者头像
overme
发布2022-01-15 12:03:34
发布2022-01-15 12:03:34
1K0
举报
文章被收录于专栏:数据开发笔记数据开发笔记

Oracle

区别
  • DELETE语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作。 RUNCATE TABLE 则一次性地从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。并且在删除的过程中不会激活与表有关的删除触发器。执行速度快。
  • 当表被TRUNCATE 后,这个表和索引所占用的空间会恢复到初始大小, DELETE操作不会减少表或索引所占用的空间。
  • 一般而言,drop > truncate > delete
  • TRUNCATE 只能对TABLE; DELETE可以是table和view
  • TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。
  • 对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
  • truncate是DDL,会隐式提交,所以,不能回滚。
测试数据
代码语言:javascript
复制
create table TestHighWMark(
 id         INTEGER,
 hash_value VARCHAR2(100)
);
效果
代码语言:javascript
复制
SELECT table_name,
         ROUND ( ((blocks) * 8/1024), 2) "高水位空间 M",
         ROUND ( (num_rows * avg_row_len / 1024/1024), 2) "真实使用空间 m",
         ROUND ( (blocks * 10 / 100) * 8/1024, 2) "预留空间(pctfree) m",
         ROUND 
            (  (blocks) * 8/1024
             - (num_rows * avg_row_len / 1024/1024)
            ,2)
            "浪费空间 m"
    FROM user_tables
   WHERE table_name='TESTHIGHWMARK'

没有占用空间

现在插入20W条数据

代码语言:javascript
复制
declare
i int;
begin
i := 0;
for i in 1..200000 loop
insert into TESTHIGHWMARK
select i,ora_hash(i) as hash_value from dual;
end loop;
end;
COMMIT;
select count(1) from TESTHIGHWMARK;

查询目前表hwm(高水位线)

现在delete全表

代码语言:javascript
复制
delete TESTHIGHWMARK;

现在高水位还是没有变

现在tuncate全表

代码语言:javascript
复制
truncate table TESTHIGHWMARK;
注意

上面的所有查询user_tables表的时候都要手动收集一下信息

代码语言:javascript
复制
begin
dbms_stats.gather_table_stats(ownname => 'XIR_TRD',tabname => 'TESTHIGHWMARK');
end;

本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 区别
  • 测试数据
  • 效果
  • 注意
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档