- 所用的事务日志空间较少
DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放用于存储表数据的数据页来删除数据,并且在事务日志中只记录页释放。 - 使用的锁通常较少
当使用行锁执行 DELETE 语句时,将锁定表中各行以便删除。TRUNCATE TABLE 始终锁定表和页,而不是锁定各行。 - 如无例外,在表中不会留有任何页
执行 DELETE 语句后,表仍会包含空页。例如,必须至少使用一个排他 (LCK_M_X) 表锁,才能释放堆中的空表。如果执行删除操作时没有使用表锁,表(堆)中将包含许多空页。对于索引,删除操作会留下一些空页,尽管这些页会通过后台清除进程迅速释放。 - 删除表的时候truncate比delete效率高很多
truncate完成的是drop table和create table的过程,所以直接删除表所占元组,无需VACUUM空间直接释放。
KingbaseES-v8r6-truncate优点
最新推荐文章于 2024-07-16 17:34:10 发布