Autovacuum, Vacuum & репликация
От | Dmitry E. Oboukhov |
---|---|
Тема | Autovacuum, Vacuum & репликация |
Дата | |
Msg-id | 20160215085247.GU11360@vdsl.uvw.ru обсуждение исходный текст |
Список | pgsql-ru-general |
Есть хост у которого на одной из таблиц делается иногда массовый (относительно) UPDATE table SET bla WHERE id = 123 при этом автоваккуум с этой таблицей не справляется (размер у 50 мегабайтовой VACUUM таблицы достигает 2 гигабайта). Но поскольку только с одной таблицей проблемы, то ее вакуум в крон дополнительно сунули и вроде проблема решилась. Интересно что перед VACUUMом EXPLAIN начинает показывать очень доглие выборки из нее, а после VACUUM скорость нормализуется вот один из простых запросов EXPLAIN до VACUUM: Index Scan using orders_status_phones_ostatus_key on orders o (cost=0.56..7.26 rows=1 width=4) (actual time=0.277..3848.999rows=139 loops=1) Index Cond: (status = 'transporting'::text) Filter: ((transporting_time IS NOT NULL) AND ("time" >= (now() - '168:00:00'::interval))) Rows Removed by Filter: 1 Total runtime: 3849.109 ms (5 строк) и его же EXPLAIN после VACUUM: Index Scan using orders_status_phones_ostatus_key on orders o (cost=0.56..7.26 rows=1 width=4) (actual time=0.242..39.913rows=125 loops=1) Index Cond: (status = 'transporting'::text) Filter: ((transporting_time IS NOT NULL) AND ("time" >= (now() - '168:00:00'::interval))) Rows Removed by Filter: 1 Total runtime: 40.036 ms (5 строк) выборка 100-150 строк по индексу с последующим простым фильтром (который отфильтровывает одну строку). Проблема в целом понятна, непонятно что делать с репликой. На реплике нет ни одного клиента, однако она после VACUUM на мастере продолжает выполнять этот же запрос за 1300-4000 мс еще минут 30-40. С тем же EXPLAIN. То есть на реплике EXPLAIN показывается все время по первому вышеприведенному варианту, а на мастере по второму. Что с репликой можно сделать чтобы у нее тоже время работы запроса тоже нормализовалось? команды VACUUM к запуску на реплике запрещены. Реплика показывает что она вполне себе не отстает от мастера ни на команду. Однако при нулевой нагрузке выполняет запросы еще где-то 30-40 минут в 20-100 раз медленнее чем мастер (у которого нагрузка серьезная). Железки мастер-слейв полностью идентичные, конфиг одинаков. кеширование вроде не при чем: статистика полностью повторяется при повторах. Если сделать REINDEX на мастере, то и на реплике при этом нормализуется жизнь. Но как-то не хочется проблемы реплик решать на мастере. -- . ''`. Dmitry E. Oboukhov : :’ : email: unera@debian.org jabber://UNera@uvw.ru `. `~’ GPGKey: 1024D / F8E26537 2006-11-21 `- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
Вложения
В списке pgsql-ru-general по дате отправления: