如何在删除记录后释放Vertica原始空间

4
我们正在使用Vertica社区版,其原始数据限制为1TB。
最近达到了1TB原始数据限制,所以我们决定从所有表中删除一些记录。删除旧记录后,Vertica仍然显示利用率:104%。
dbadmin=> SELECT GET_COMPLIANCE_STATUS();
GET_COMPLIANCE_STATUS
----------------------------------------------------------------------------------------
Raw Data Size: 1.04TB +/- 0.10TB
License Size : 1.00TB
Utilization  : 104%
Audit Time   : 2014-09-04 13:05:24.020979-04
Compliance Status : The database is in compliance with respect to raw data size.

No expiration date for a Perpetual license

NOTICE: Recent audits suggests a change in compliance status. We are awaiting additional data points to confirm.
(1 row)

有什么办法可以释放那个空间吗?
4个回答

11

DELETE 删除的行会被标记为删除,但不会立即从物理存储中删除。您需要等待合并(mergeout)发生、提前纪元(epoch)、或运行 PURGE 命令。有关清除已删除数据的更多信息,请参阅文档


3
除了Kermit的回答之外...
由于删除操作很耗费资源,我曾经将数据分散存储在按日期为基础的分区上,当完成数据迁移后,我会将该分区删除。

+1 我希望楼主阅读文档中关于这样做的灰色提示。 - Kermit

3
被标记为删除的记录由删除向量指向。您可以通过以下查询找到删除向量的计数。
select count(1) from delete_vectors;

删除删除向量

您可以编写一个包含以下内容的脚本:

select make_ahm_now()
select purge()

然后安排运行这个脚本。


1

计算数据库大小时,已删除的记录将被排除在外。因此,立即清除删除向量并不紧急。

要立即查看您的删除对许可合规性的影响,您可以使用以下方法触发立即审核:

select audit_license_size();

正如其他人所说的那样

select make_ahm_now(); select purge();

将永久删除已删除的记录,但这些操作可能非常耗时,并且会阻止像 truncate() 这样的操作。 您可以通过使用

  select purge_table('<your table name');

替代

  select purge()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接