2014-09-04 3 views
4

Мы используем редакцию сообщества Vertica, у которой есть предел сырых данных 1 ТБ.Как освободить вертикальное пространство после удаления записей

недавно достиг предела передачи данных 1 ТБ, поэтому мы решили удалить некоторые записи из всех таблиц. После удаления старых записей 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) 

Любая идея, как высвободить пространство?

ответ

10

Строки, которые были удалены с использованием DELETE, помечены для удаления и не удаляются сразу с физического носителя. Вам нужно дождаться, когда произойдет слияние, продвинуть эпоху или запустить PURGE. Более подробная информация об удалении удаленных данных доступна в documentation.

3

Помимо ответа Кермита ...

С удалений дороги я использовал, чтобы поместить данные на разделах, основанные вокруг даты, и после того, как архивирование данных, где-то еще я бы уронить раздел.

+0

+1 Я надеюсь OP читает серую записку в документации о делать это. – Kermit

2

Записи, помеченные для удаления и указываемого на удаление векторов Вы можете найти счетчик на удаление векторов по следующему запросу

select count(1) from delete_vectors; 

Для удаления УДАЛИТЬ векторов Вы можете написать скрипт, который содержит

select make_ahm_now() 
select purge() 

А затем запланировать для запуска этого сценария

1

Удаленные записи исключаются при computin g размер базы данных. Таким образом, нет неотложной необходимости немедленно очищать векторы удаления.

Чтобы сразу увидеть эффект вашего удаления на вашем соответствии лицензий, вы можете вызвать немедленную проверку с

select audit_license_size(); 

Как уже сказал

select make_ahm_now(); select purge();

удалят удаленные записи навсегда но эти операции могут быть очень трудоемкими и будут блокировать операции, такие как truncate(). Вы можете уменьшить нарушение с помощью

select purge_table('<your table name'); 

вместо

select purge() 
Смежные вопросы