
Andrey
23.08.2018
14:16:59
нет тупо запускал, помогало...теперь персетало помогать

Alexey
23.08.2018
14:17:00
Т.е. автовакуум умеет ещё и дефрагментировать?

Andrey
23.08.2018
14:17:19

Andrey
23.08.2018
14:18:05

Google

Andrey
23.08.2018
14:19:43
видимо это с остановкой в обслуживании ДБ?
Или только конкретного отношения, если нужно оно. А вообще у меня есть патч - автосборщик мусора. Место не освободит но от раздувания отношения и индексов - предотвратит. Обращайся

Yaroslav
23.08.2018
14:20:32

Alexey
23.08.2018
14:21:28
Нет.
Т.е. место не освобождается, просто постгрес может записывать в свободные места другие данные?

Andrey
23.08.2018
14:23:01

Yaroslav
23.08.2018
14:23:09

Andrei
23.08.2018
14:24:09

Илья
23.08.2018
14:24:26
а pg_repack не панацея в этом случае?

Alexey
23.08.2018
14:24:42
@avlepikhov Yaroslav спасибо

Andrey
23.08.2018
14:27:55

Andrei
23.08.2018
14:28:22
1. вакуум-фулл - зло, только в крайнем случае
2. вакуум не освобождает место, он делает его доступным для перезаписи, поэтму после вакуума база меньше места на диске занимаеть не будет
3. читать документацию, плюс есть много позновательных статей на тему сборщика мусора в постгре. Вообще, сборщик мусора в постгре - это одна из самых сереьзных и сложных тем для освоения, с наскоку и по советам в этом чате Вы проблему не решите. в каждом случае все индивидуально. Ведь можно накрутить жесткие настройки для всей базы, от чего деградирует производительность, а можно найти конкретные таблицы-виновницы - и натравить автовакуум на них с агрессивными настройками

Andrey
23.08.2018
14:28:24
помогало после удалений в бд мусора. Сейчас не помогает
вот вообщем п.2

Google

Maksim
23.08.2018
14:30:25

Andrey
23.08.2018
14:31:22

Andrei
23.08.2018
14:32:27
вот для старта подробная статья
https://blog.2ndquadrant.com/autovacuum-tuning-basics/
но на живой базе это скорее исключение, особенно если это OLTP c интенсивным построчными DML

Yaroslav
23.08.2018
14:34:10

Andrei
23.08.2018
14:37:00
ну естественно, у Andrey есть приход от вакуума)) какое-то время база не растет дальше)

Andrey
23.08.2018
14:40:00
Спасибо за ссылки раскурю в вакууме ?

Maksim
23.08.2018
14:45:28

Andrei
23.08.2018
14:46:06
))))

Maksim
23.08.2018
14:46:28

Andrei
23.08.2018
14:47:09
тно я уверен, что процент таких решений ничтожно мал по отношению к базам, которые юзаются обычными орм-ками

Andrey
23.08.2018
14:47:44
А чем опасен vacuum full ?

Andrei
23.08.2018
14:47:46
где в таблице юзеров лежит поле “ласт_логин” или еще какая ерунда
которую непременно нужно долбить 1000 раз в секунду
как единоразовое решение - может быть
НО нужно иметь двойной запас места на диске)

Andrey
23.08.2018
14:49:59
Автовакуум тоже не спасает. Допустим есть приложение, которое пишет в постгрес. Потом удаляет данные. Вижу автовакуум в процессах. А место не высвобождается.
Сейчас заглянул в код vacuum.c, cluster.c:
1. VACUUM FULL записывает кортежи по порядку, без промежутков - это должно уменьшать размер отношения, если возможно. Для индексов делает REINDEX - также размер падает.
2. VACUUM удаляет dead-кортежи, не изменяя положения живых, т.е. все блоки остаются на месте. Единственный случай, когда обычный VACUUM уменьшает размер, как я понимаю, это когда в конце отношения имеются пустые блоки, выполняется TRUNCATE.

Google

Maksim
23.08.2018
14:51:39
> VACUUM удаляет dead-кортежи, не изменяя положения живых, т.е. все блоки остаются на месте.
Не, ну живые он скорее будет дефрагментировать в рамках страницы

Andrey
23.08.2018
14:52:17

Andrei
23.08.2018
14:52:19
я бы Вам посоветовал действовать следующим образом
1. сохранить список всех таблиц с их полным размером (данные + индексы)
2. бэкап-рестор
3. сравнение реза из пункта 1 с результатом после рестора (что поможет опеределить, база равномерно блоатится, или есть определенные лидеры по мусору)
4. настройка автовакуума исходя из п.3

Maksim
23.08.2018
14:54:23

Lazoreth
23.08.2018
14:58:08
Народ, почему может не работать репликация? Ошибок в логах нет, но репликации тоже

IGOR
23.08.2018
15:00:22
Ребята срочняк! Надо нечто чем можно перенести, конвертировать из mssql в postgresql

Mike Chuguniy
23.08.2018
15:01:49

Andrei
23.08.2018
15:03:00

IGOR
23.08.2018
15:03:25

Andrei
23.08.2018
15:04:37
в исходники смотрели?
сейчас - нет, но лет 5 назад, когда подсел на PG, сидел с документацией и исходниками, пытаясь понять, что за такое этот вакуум

Maksim
23.08.2018
15:05:19

Andrei
23.08.2018
15:05:22
я наизусто только http://ora2pg.darold.net/ помню)

Yaroslav
23.08.2018
15:16:49
А чем опасен vacuum full ?
. Он всё сжимает максимально, что может быть далеко от "рабочего" режима базы.
. После него, по-хорошему, нужно делать обычный VACUUM.

Andrey
23.08.2018
15:17:39
обычный вакуум никак не изменит состояние бд после vacuum full
Опасность может быть разве из за длительной эксклюзивной блокировки таблиц. В них не заглянуть даже на чтение.

Google

Yaroslav
23.08.2018
15:25:13

Konstantin
23.08.2018
15:26:27
А чем опасен vacuum full ?
ну и ещё он требует 2x места. Если у вас есть терабайтная табличка и вы делаете vacuum full, то нужно 2 терабайта на диске.

Andrey
23.08.2018
15:26:37

elfiki
23.08.2018
15:30:54
нужно выбирать одну случайную запись из таблицы, как это правильно сделать?
order by random() не очень как-то, по кругу 10 записей отдает из 1000
ну то есть очень много повторений

Taras ?
23.08.2018
15:37:47
в mysql советуют
SELECT f.id FROM files f
JOIN ( SELECT RAND() * (SELECT MAX(id) FROM files) AS max_id ) AS m
WHERE f.id >= m.max_id
ORDER BY f.id ASC
LIMIT 1;
только там RAND() — значение между 0 и 1
не знаю как это в постгресе, не пробовал еще

ко?TEXHIK
23.08.2018
15:43:10

elfiki
23.08.2018
15:43:37

Andrey
23.08.2018
15:47:02

Konstantin
23.08.2018
15:59:25
vacuum full оставляет собственно только видимые таплы, поэтому index only scan после него очень даже будет работать.

Antony
23.08.2018
15:59:41
всем привет, может кто подскажет manual что бы написать агргегирующую функцию на Си?

Terminator
23.08.2018
16:21:56
@AlexFedorov будет жить. Поприветствуем!

Yaroslav
23.08.2018
16:26:59

Konstantin
23.08.2018
16:28:25
postgres=# explain select count(*) from t where x between 100 and 1000;
QUERY PLAN
—---------------------------------------------------------------------------—
Aggregate (cost=39.09..39.10 rows=1 width=8)
-> Index Only Scan using t_x_idx on t (cost=0.42..36.91 rows=874 width=0)
Index Cond: ((x >= 100) AND (x <= 1000))
(3 rows)
postgres=# vacuum full t;
VACUUM
postgres=# explain select count(*) from t where x between 100 and 1000;
QUERY PLAN
—---------------------------------------------------------------------------—
Aggregate (cost=39.09..39.10 rows=1 width=8)
-> Index Only Scan using t_x_idx on t (cost=0.42..36.91 rows=874 width=0)
Index Cond: ((x >= 100) AND (x <= 1000))
(3 rows)

Yaroslav
23.08.2018
16:32:48


Terminator
23.08.2018
16:40:56
Johnson будет жить. Поприветствуем!

Johnson
23.08.2018
16:41:49
Hi all, I am postgesql DBA in India.

Google

elfiki
23.08.2018
16:43:02

Yaroslav
23.08.2018
16:45:12

Konstantin
23.08.2018
16:51:39
vacuum таплы не морозит. Надо vacuum freeze явно сделать


Tim
23.08.2018
17:09:30
уважаемые коллеги, подскажите может кто чего
ситуация такая
есть сервер postgres (9.5), master->slave
хранилище azure blob storage
хочется делать живой WAL backup
а для того, чтобы делать WAL, нужно сделать base/snapshot сначала, то есть начальное состояние базы
вроде бы нашлось решение под названием wal-e
но оно стартует backup так
"SELECT file_name, "
" lpad(file_offset::text, 8, '0') AS file_offset "
"FROM pg_{0}file_name_offset("
" pg_start_backup('{1}'))"
это можно делать только на мастере, на слейве происходит
ERROR: recovery is in progress
HINT: WAL control functions cannot be executed during recovery.
хочется понять, есть ли какие-то варианты кроме того чтобы допиливать wal-e самому
(чтобы вызывать pg_basebackup, который будет делать снапшот с мастера)
может быть, есть какие-то иные работающие решения для postgresql WAL -> Azure ?
спасибо за внимание
backup с мастера технически возможный вариант, но клиент не хочет нагрузки на мастер лишней
"клиент" в смысле "заказчик"


Айтуар
23.08.2018
17:23:47
уважаемые коллеги, подскажите может кто чего
ситуация такая
есть сервер postgres (9.5), master->slave
хранилище azure blob storage
хочется делать живой WAL backup
а для того, чтобы делать WAL, нужно сделать base/snapshot сначала, то есть начальное состояние базы
вроде бы нашлось решение под названием wal-e
но оно стартует backup так
"SELECT file_name, "
" lpad(file_offset::text, 8, '0') AS file_offset "
"FROM pg_{0}file_name_offset("
" pg_start_backup('{1}'))"
это можно делать только на мастере, на слейве происходит
ERROR: recovery is in progress
HINT: WAL control functions cannot be executed during recovery.
хочется понять, есть ли какие-то варианты кроме того чтобы допиливать wal-e самому
(чтобы вызывать pg_basebackup, который будет делать снапшот с мастера)
может быть, есть какие-то иные работающие решения для postgresql WAL -> Azure ?
спасибо за внимание
Wal-g


Tim
23.08.2018
17:40:11
Wal-g
там нет поддержки Azure, только AWS
https://github.com/wal-g/wal-g/issues/9
к тому же в Azure там недавно поменялся blob API, к wal-e был патч пару месяцев назад
можно попробовать из wal-g в wal-e портировать конечно, если найти время и вдохновение )

Айтуар
23.08.2018
17:43:03

Tim
23.08.2018
17:43:23
azure api ужасный, но я как раз Go хотел поизучать
а о wal-g есть позитивное мнение?