|
|
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Привет. Описание проблемы: Таблица размером - 365 Гб данные, 238 Гб индексы. | Size | External Size ------------------------------------------+------------+--------------- | 635 GB | 269 GB Вакуум на таблице включен, когда захожу в pgAdmin, то: Последняя очистка - 0 Последний анализ - 0 Последняя автоочистка - 0 Последний автоанализ - 0 Пытался на ней запускать pgcompacttable - как только он доходит до шага VACUUM public.таблица поднимается блокировка autovacuum (to prevent workaround) и висит так....неделю висело так ничего и не произошло. Попытался использовать pg_repack - но он делают сначала копию таблицы, а на диске осталось всего 200 Гб. Не вариант. Попытался ночью выставить на самой таблицы ALTER TABLE таблица SET (autovacuum_enabled = false) - снова поднимается процесс autovacuum (to prevent workaround). Ребята, как быть? подскажите, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 17:18 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Pavel Bobrovnikov, Дайте угадаю: В конфиге стоит autovacuum = off ? Остальные параметр - по умолчанию? По поводу проблемки читайте здесь : пункт 23.1.5. Preventing Transaction ID Wraparound Failures ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 17:40 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
ursido, autovacuum = on autovacuum_max_workers = 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 17:45 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Pavel Bobrovnikov, Очень странно. Чему равны maintenance_work_mem vacuum_freeze_table_age Есть ли транзакции в статусе IDLE IN TRANSACTION ? Есть ли вообще длительные висящие транзакции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 17:58 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
maintenance_work_mem = 3GB work_mem = 3GB #vacuum_freeze_table_age = 150000000 (закоменчен) ursidoЕсть ли транзакции в статусе IDLE IN TRANSACTION ? Нет таких. ursidoЕсть ли вообще длительные висящие транзакции? autovacuum: VACUUM таблица (to prevent wraparound) висит с 28 сентября. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 18:08 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
в таблице приблизительно строк - 5051900000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 18:24 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Pavel Bobrovnikov, можно вывод select name, setting from pg_settings where name ~'vacuum'; ? диски не перегружены при работе? ssd или нет? нужно бы to prevent wraparound автовакууму дать доработать, от этого никак не уйти. если диски не перегружены, нужно дать автовакууму больше ресурсов. таблица insert only? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 20:25 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Pavel Bobrovnikov, почему Вы решили что таблица вообще может сжаться? Может быть это её естественный размер? покажите: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. что это за сервер? виртуалка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.10.2015, 20:30 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
[quote Alexius]можно вывод select name, setting from pg_settings where name ~'vacuum'; ?/quote] autovacuum | on autovacuum_analyze_scale_factor | 0.05 autovacuum_analyze_threshold | 50 autovacuum_freeze_max_age | 9000000000 autovacuum_max_workers | 3 autovacuum_multixact_freeze_max_age | 400000000 autovacuum_naptime | 3600 autovacuum_vacuum_cost_delay | 60 autovacuum_vacuum_cost_limit | -1 autovacuum_vacuum_scale_factor | 0.2 autovacuum_vacuum_threshold | 50 log_autovacuum_min_duration | -1 vacuum_cost_delay | 0 vacuum_cost_limit | 200 vacuum_cost_page_dirty | 20 vacuum_cost_page_hit | 1 vacuum_cost_page_miss | 10 vacuum_defer_cleanup_age | 0 vacuum_freeze_min_age | 50000000 vacuum_freeze_table_age | 150000000 vacuum_multixact_freeze_min_age | 5000000 vacuum_multixact_freeze_table_age | 150000000 [quote Alexius]диски не перегружены при работе? ssd или нет? нужно бы to prevent wraparound автовакууму дать доработать, от этого никак не уйти. если диски не перегружены, нужно дать автовакууму больше ресурсов./quote] Ни заббикс, ни окметр не говорят о перегруженности дисков. База на ССД. Как дать автовакууму больше ресурсов? где подкрутить? [quote Alexius] таблица insert only? /quote] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2015, 13:55 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Да, таблица в основном на запись. Но раз в 2 недели из нее удаляются записи. авторPavel Bobrovnikov, почему Вы решили что таблица вообще может сжаться? Может быть это её естественный размер? Подумал так из-за того, что на ней ни разу получается не было вакуума. PostgreSQL 9.3.6 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.4.7 20120 313 (Red Hat 4.4.7-11), 64-bit (1 row) =# select c.reloptions, t.reloptions from pg_class c left join pg_class t on c.reltoastrelid = t.oid where c.oid = 'd_session'::regclass; reloptions | reloptions ------------+------------ | (1 row) Железный сервер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2015, 13:59 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
pbobrovnikov, max_workers = 10. Цифра 3 - с другого сервера снял ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2015, 14:01 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
pbobrovnikov autovacuum_vacuum_cost_delay | 60 для начала стоит попробовать уменьшить этот параметр, у вас почему-то он прописан больше чем дефолтное значение (20ms). уменьшать до тех пор, пока диски держат нагрузку (до 5-20). autovacuum_naptime тоже довольно большой прописан зачем-то. если помимо этой таблицы есть еще мелкие часто обновляемые - то стоит его снизить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2015, 10:58 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Pavel Bobrovnikov, Для начала посмотрите select relname,age(relfrozenxid) from pg_class where relname='имя таблицы' autovacuum_freeze_max_age | 9000000000-c таким значением этого параметра avtovacuum нина какой таблице не начнется по умолчанию это значение 200 000 000, а счетчик транзакций ограничен 2 000 000 000 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2015, 18:36 |
|
||
|
Сжать большую таблицу
|
|||
|---|---|---|---|
|
#18+
Ребят, проблема решилась следующий образом: Процесс "autovacuum table (to prevent wraparound)" доработал до конца сам и таблицу я смог свакуумировать и запустить на ней pg_compacttable. Уменьшил 150 Гб на диске. Спасибо всем за помощь! Параметры по vacuum также поменял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2015, 14:45 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39072934&tid=1997684]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 227ms |
| total: | 478ms |

| 0 / 0 |
