[整理]关于truncate的原理

1. 数据被清空,存储空间被释放,自动提交

 

2. DDL操作,立即生效,不做表扫描,原数据不放到rollback segment中,不能回滚,操作不触发trigger

 

3.  与delete比较,“一本书,truncate是把目录撕了,delete是撕书的内容”

truncate是一种数据库操作,用于删除表中的数据。其实现原理如下: 1. 首先,truncate会获取表的写锁,防止其他事务对表进行操作。 2. 接着,truncate会将表的索引和约束信息等保存起来,以便恢复数据时使用。 3. 然后,truncate会将表的所有数据页清空,以释放存储空间。 4. 清空数据页后,truncate会重置表的计数器,以便下一次插入数据时使用。 5. 最后,truncate会释放表的写锁,允许其他事务对表进行操作。 与delete操作相比,truncate具有以下特点: 1. truncate操作是DDL操作,delete操作是DML操作。这意味着truncate会将所有数据页清空,而delete操作只是将记录标记为已删除,实际存储空间不会释放。 2. truncate操作是一个原子操作,即要么全部删除,要么不删除任何数据,不会中途出错。而delete操作可以随时中断,只删除已经处理的数据。 3. truncate操作速度较快,因为它不需要记录删除的信息。而delete操作需要记录已删除的数据。 需要注意的是,使用truncate操作时要慎重,因为它将删除表中的所有数据,无法恢复。在使用truncate操作前,应该备份好需要保留的数据,以免造成不可逆的损失。 总之,truncate的实现原理是获取表的写锁,清空数据页并重置计数器,然后释放写锁。它具有快速、原子、不可逆的特点,适用于删除整个表的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wsdhla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值