Я использую 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 для обрезания одной и той же таблицы, дисковое пространство освобождается, как ожидалось.
звуки, как будто вы не совершая 'truncate' правильно –
коммита, должен быть автоматически обрабатывается' @Transactional ' – membersound
Может быть, он должен *, но из вашего описания я бы сказал, что нет. Что означает «pg_stat_activity» для подключения вашего приложения _before_ вы отключите свое приложение Java? Может быть, весна не знает, что ей нужно выполнить инструкцию 'truncate'. –