2015-05-16 1 views
2

Я использую spring-data с CrudRepository для любого доступа к базе данных. Один раз в день мне также нужно усекать кешированный стол с примерно 100 ГБ данных и перестроить его.Truncate физически не освобождает дисковое пространство

Проблема: таблица усечена успешно (я проверял, что таблица пуста), НО файл физически не удален из жесткого диска базы данных!

interface MyTableRepository extends CrudRepository<MyTableEntity, Long> { 
    @Query(value = "TRUNCATE TABLE my_table", nativeQuery = true) 
    @Modifying 
    @Transactional 
    void truncateTable(); 
} 

В результате пространство с жестким диском уменьшается с каждым днем. Что я заметил: если я закрою свое приложение java, то сразу же до truncated части таблицы postgres будут удалены!

Что может быть причиной этого?

Когда я использую pgAdmin для обрезания одной и той же таблицы, дисковое пространство освобождается, как ожидалось.

+1

звуки, как будто вы не совершая 'truncate' правильно –

+0

коммита, должен быть автоматически обрабатывается' @Transactional ' – membersound

+0

Может быть, он должен *, но из вашего описания я бы сказал, что нет. Что означает «pg_stat_activity» для подключения вашего приложения _before_ вы отключите свое приложение Java? Может быть, весна не знает, что ей нужно выполнить инструкцию 'truncate'. –

ответ

0

Есть две возможные причины

  1. PostgresSQL бы удалить этот файл индекса после вакуума. Так ждать или вакуум по себе

  2. SQL не совершил, пока не бросить эту программу Java

+0

Для 2) могу сказать: используя pgAdmin, я вижу усеченную пустую таблицу! Итак, я полагаю, что sql действительно совершается, так как иначе я бы не увидел пустой db? Пункт 1): не должен ли я видеть вакуумный pid в списке, если что-то еще продолжается? Я не вижу никакого вакуумного процесса и не думаю, что вакуум не заканчивается через несколько дней (но жесткий диск содержит файлы базы данных также с прошлой недели, хотя эти данные были усечены давно) ... – membersound

+3

1) неправильно, файл сразу же удаляется –

+0

ahh, да. Я не прав. Truncate немедленно удалит файл – gambol

Смежные вопросы