Thread: TOAST и борьба с разбуханием этой таблицы.

TOAST и борьба с разбуханием этой таблицы.

From
Warstone@list.ru
Date:
Как известно у Пг есть некоторая проблема с TOAST'ами. Обычно она лечится более агрессивным вакуумом или чем-то подобным.

Если копнуть глубже, то тоаст таблицы - это обычные таблицы Пг, где просто хранятся данные. Начать копать можно отсюда: http://www.postgresql.org/docs/9.3/static/storage-toast.html
Смысл в том, что у этой таблицы так-же есть ctid.

Так-же есть очень полезная тула pgcompactor, которая часть тулкита  https://github.com/grayhemp/pgtoolkit

Смысл той тулы - посмотреть сколько есть свободного места, если есть, то обновлять последние записи на диске до тех пор, пока они не уйдут на страницу выше, освобождая текущую страницу и позволяя, таким образом, сделать VACUUM FULL без полного лока таблицы. Один минус - она не умеет тоасты. Проблема заключается в том, что нельзя апдейтить напрямую в тоасты.

Собственно 2 вопроса:
1) Как понять какой chunk_id какой записи принадлежит?
2) Как все-таки апдейтнуть тоаст таблицу не входя в спец режим?

Просто очень хочется получить эту возможность для тоастов.

--
Nick unnoun
Можно воспользоваться https://github.com/reorg/pg_repack

Он то точно это пофиксит, но он создает новую таблицу, в которую переливает данные. Тоесть потребуется 2X места
таблицы,которую будете фиксить. 

Тут чуть больше информации: http://postgresql.leopard.in.ua/html/#pg_repack


Thu, 22 Jan 2015 16:25:53 +0300 от Warstone@list.ru <warstone@list.ru>:
>  Как известно у Пг есть некоторая проблема с TOAST'ами. Обычно она лечится более агрессивным вакуумом или чем-то
подобным.
>
> Если копнуть глубже, то тоаст таблицы - это обычные таблицы Пг, где просто хранятся данные. Начать копать можно
отсюда: http://www.postgresql.org/docs/9.3/static/storage-toast.html 
> Смысл в том, что у этой таблицы так-же есть ctid.
>
> Так-же есть очень полезная тула pgcompactor, которая часть тулкита  https://github.com/grayhemp/pgtoolkit
>
> Смысл той тулы - посмотреть сколько есть свободного места, если есть, то обновлять последние записи на диске до тех
пор,пока они не уйдут на страницу выше, освобождая текущую страницу и позволяя, таким образом, сделать VACUUM FULL без
полноголока таблицы. Один минус - она не умеет тоасты. Проблема заключается в том, что нельзя апдейтить напрямую в
тоасты.
>
> Собственно 2 вопроса:
> 1) Как понять какой chunk_id какой записи принадлежит?
> 2) Как все-таки апдейтнуть тоаст таблицу не входя в спец режим?
>
> Просто очень хочется получить эту возможность для тоастов.
>
> --
> Nick unnoun

--
Alexey Vasiliev
Про это знаю. Не устраивает 2ной размер. SSD не напасешься на такие решения.

Thu, 22 Jan 2015 16:45:05 +0300 от Alexey Vasiliev <leopard_ne@inbox.ru>:
Можно воспользоваться https://github.com/reorg/pg_repack

Он то точно это пофиксит, но он создает новую таблицу, в которую переливает данные. Тоесть потребуется 2X места таблицы, которую будете фиксить.

Тут чуть больше информации: http://postgresql.leopard.in.ua/html/#pg_repack


Thu, 22 Jan 2015 16:25:53 +0300 от Warstone@list.ru <warstone@list.ru>:
> Как известно у Пг есть некоторая проблема с TOAST'ами. Обычно она лечится более агрессивным вакуумом или чем-то подобным.
>
> Если копнуть глубже, то тоаст таблицы - это обычные таблицы Пг, где просто хранятся данные. Начать копать можно отсюда: http://www.postgresql.org/docs/9.3/static/storage-toast.html
> Смысл в том, что у этой таблицы так-же есть ctid.
>
> Так-же есть очень полезная тула pgcompactor, которая часть тулкита  https://github.com/grayhemp/pgtoolkit
>
> Смысл той тулы - посмотреть сколько есть свободного места, если есть, то обновлять последние записи на диске до тех пор, пока они не уйдут на страницу выше, освобождая текущую страницу и позволяя, таким образом, сделать VACUUM FULL без полного лока таблицы. Один минус - она не умеет тоасты. Проблема заключается в том, что нельзя апдейтить напрямую в тоасты.
>
> Собственно 2 вопроса:
> 1) Как понять какой chunk_id какой записи принадлежит?
> 2) Как все-таки апдейтнуть тоаст таблицу не входя в спец режим?
>
> Просто очень хочется получить эту возможность для тоастов.
>
> --
> Nick unnoun

--
Alexey Vasiliev