有人可以解释truncate如何在netezza数据库中工作,以及为什么删除所有记录的速度很快。 需要知道从表中删除所有记录的内部登录。
答案 0 :(得分:0)
行为因版本而异,但是7.2.0.4及更高版本TRUNCATE可以与针对同一个表的其他查询同时运行,也可以在备份运行时运行。
当TRUNCATE发生时,系统记录运行TRUNCATE的事务的TXID。
在该TXID之前启动事务的任何查询都会在运行TRUNCATE之前看到该表。
在TRUNCATE的TXID提交之后启动的事务中引用该表的任何查询都将看到一个空表,因为它知道要删除扫描列表中较低TXID创建的所有行。
因此,TRUNCATE非常快,因为它只需要标记每个删除的范围。一旦所有早于TRUNCATE TXID的未完成交易提交,系统将悄悄地将所有存储释放回池中。