Выполнялся ли вакуум Postgresq при выполнении транзакции JDBC? - PullRequest
0 голосов
/ 04 мая 2018

Из блога PostgreSQL

VACUUM восстанавливает память, занятую мертвыми кортежами. В обычной работе PostgreSQL кортежи, которые были удалены или удалены обновлением, физически не удаляются из их таблицы; они остаются присутствующими, пока ВАКУУМ не сделан. Поэтому необходимо периодически делать VACUUM, особенно для часто обновляемых таблиц.

Итак, у меня возникла проблема оптимизации производительности в java-приложении с jdbc. Итак, мой вопрос: VACUUM выполнялся где-то в транзакции JDBC или нужно установить явно?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Вы можете контролировать работу VACUUM, выполнив соответствующие настройки, описанные в разделе https://www.postgresql.org/docs/current/static/runtime-config-autovacuum.html#GUC-AUTOVACUUM-FREEZE-MAX-AGE

0 голосов
/ 04 мая 2018

Хотя эта цитата говорит правду, в нем опущен тот факт, что в течение примерно десяти лет в PostgreSQL был демон autovacuum , который выполняет эту работу автоматически.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...