
Nikolai
22.03.2018
10:31:51

Artem
22.03.2018
10:32:29
а есть статистика по количеству запросов на чтение/запись?

Nikolai
22.03.2018
10:35:31

Nikita
22.03.2018
10:39:29
вопрос: включен autovacuum, делается elapsed 606.95 sec. Сильно ли при включенном автовакуме падает производительность?

Google

Nikita
22.03.2018
10:40:04
таблицы под несколько десятков-сотен гигабайт

Nikolai
22.03.2018
10:40:07

Darafei
22.03.2018
10:40:48

Nikita
22.03.2018
10:42:04
и у нас когда делается автовакум, то всё тормозит
чисто из моих заключений, которые могут быть ошибочны

Darafei
22.03.2018
10:42:34
ты можешь посмотреть на это обычными утилитами исследования процессов в системе

Pavel
22.03.2018
10:46:20
кто нибудь?

Darafei
22.03.2018
10:46:59
кто нибудь?
вывод: кто-то скинул какие-то цифры в чат и хочет объяснений без описания проблемы

Nikita
22.03.2018
10:47:48

Darafei
22.03.2018
10:48:20

Pavel
22.03.2018
10:48:51

Google

Nikolai
22.03.2018
10:48:56

Darafei
22.03.2018
10:50:46

Nikolai
22.03.2018
10:51:55
это агрегированное, чтобы цифры набрались побольше
и логгер лидирует с большим отрывом

Darafei
22.03.2018
10:53:41
что делал 57257 на 29% io?
или его ныне живой аналог

Nikolai
22.03.2018
10:55:45
как бы ещё это посмотреть

Darafei
22.03.2018
10:56:01
можно погрепать лог на этот pid

Pavel
22.03.2018
10:57:52

Nikolai
22.03.2018
11:01:37


Andrew
22.03.2018
11:04:16
Небольшой вопрос. Eсть запрос, который вытаскивает Top-N значений
with top as
(
select story_id, count(*) as count, type
from story_statuses
where type = ? and removed_at is null
group by story_id, type
limit 5
)
select id, title, count, type
from top
join stories on top.story_id = stories.id;
Должен ли я накладывать индекс на type и removed_at?
QUERY PLAN
------------------------------------------------------------------------------------
Hash Join
Hash Cond: (story.id = top.story_id)
CTE top
-> Limit
-> HashAggregate
Group Key: story_statuses.quest_id, story_statuses.type
-> Seq Scan on story_statuses
Filter: ((removed_at IS NULL) AND (type = 'would-go'::text))
-> Seq Scan on stories
-> Hash
-> CTE Scan on top
(11 rows)
судя по всему тут идет последовательный скан таблицы, что не есть хорошо для запроса group by

Darafei
22.03.2018
11:10:30
тебе бы индекс на story_id, type where removed_at is null

Vladimir
22.03.2018
11:11:34
Подскажите, пожалуйста, в какую сторону копать? Необходимо построить кластер отказоустойчивый, что сейчас самое перспективное и актуальное? планируем 10 версию использовать.

Andrew
22.03.2018
11:12:37

Darafei
22.03.2018
11:13:01
partial index, ты можешь привязать к индексу условие

Andrew
22.03.2018
11:13:26

Google

Evgeniy
22.03.2018
11:16:19

Darafei
22.03.2018
11:16:49
так порядок в групбае же

Evgeniy
22.03.2018
11:16:57
так а where

Darafei
22.03.2018
11:17:10
тогда и в групбае порядок менять

Evgeniy
22.03.2018
11:17:30
это было бы идеально да

Andrew
22.03.2018
11:19:26
group by type, story_id?

Evgeniy
22.03.2018
11:20:02
ктото ходит в первую таблицу сексканом, и она почти всегда читается не с буфер кеша, то есть данные "холодные"
остальные индексами и из кеша

Pavel
22.03.2018
11:24:04
Спасибо!

Nikolai
22.03.2018
11:28:33
На что может Logger process тратить иопсы и bw?
Он пишет у меня <10G данных в сутки в файл, но при этом по иотопу легко делает гигабайт в 10 минут

Darafei
22.03.2018
11:35:52
На fsync

Аггей
22.03.2018
11:47:01
Чет я на графики поглядел. Число временных файлов стало меньше, количество записи больше - есть стойкок ощущение, что у вас просто БД стала обрабатывать больше запросов в секунду.

Yaroslav
22.03.2018
11:47:11

Nikolai
22.03.2018
11:47:30

Аггей
22.03.2018
11:48:13
Почему сократилось число временных файлов?

Nikolai
22.03.2018
11:48:37
это хороший вопрос

Аггей
22.03.2018
11:50:05
pg стал параллелить видимо... отсюда можно объяснить iowait. Но вот как сбез изменения настроек уменьшилось число/объем временных файлов?

Nikolai
22.03.2018
11:57:18
work_mem подняли ребята при переносе, поэтому
но проблема в другом оказалась.
log_rotation_size = 3
@Komzpa @ArtemTokarev @aggeisoft
Спасибо за помощь!

Michael
22.03.2018
12:06:20
Добрый день
Подскажите, кто что использует для партиционирования таблиц в боевых условиях на БД?
Со встроенным механизмом в 10ке пробовали работать?

Google

Dmitry
22.03.2018
12:36:33
интересно, а тяжело заставить pgbouncer <-> pgbouncer общаться через свой протокол с компрессией?
авито что-то такое не делало?

Sergey
22.03.2018
12:39:43
Наверно если обернуть поверх в TLS, компрессию можно получить за так

Dmitry
22.03.2018
12:40:05
но за счёт воркеров pg
а хочеться это унести с базы
stunnel - разговаривает на pgsql протоколе
но не хочеться лишнего сервиса :)

Alexey
22.03.2018
12:55:51
но компрессия в openssl доживает последние дни: https://www.postgresql.org/docs/devel/static/libpq-connect.html#LIBPQ-CONNECT-SSLCOMPRESSION

Dmitry
22.03.2018
12:56:31
ну да! есть же однопоточные stunnel :D

Andrew
22.03.2018
13:05:26

Yaroslav
22.03.2018
13:06:54

Andrew
22.03.2018
13:08:53

Yaroslav
22.03.2018
13:09:40

Andrew
22.03.2018
13:10:45
with top as
(
select story_id, count(*) as count, type
from story_statuses
where type = ? and removed_at is null
group by type, story_id
limit 5
)
select id, title, count, type
from top
join stories on top.story_id = stories.id;
возможно да, для упорядоченности, надо добавить еще order by

Yaroslav
22.03.2018
13:17:55

Andrew
22.03.2018
13:27:59
а есть ли разница между созданием индекса для каждого столбца или сразу для нескольких в моем случае?
“story_statuses_pkey" PRIMARY KEY, btree (id)
"story_statuses_type_story_id_index" btree (type, story_id)

Yaroslav
22.03.2018
13:35:07

Google

Andrew
22.03.2018
13:40:22
А вы можете показать итоговый запрос?
да, конечно.
with top as
(
select story_id, count(*) as count, type
from story_statuses
where type = ? and removed_at is null
group by type, story_id
limit 5
)
select id, title, count, type, "order"
from top
join stories on top.story_id = stories.id
order by count desc, "order"

Yaroslav
22.03.2018
13:42:12
да, конечно.
with top as
(
select story_id, count(*) as count, type
from story_statuses
where type = ? and removed_at is null
group by type, story_id
limit 5
)
select id, title, count, type, "order"
from top
join stories on top.story_id = stories.id
order by count desc, "order"
Он по-прежнему неправильный, разве нет?
Вы сначала (в CTE "top") выбираете 5 _произвольных_ story_id.
Это именно то, что нужно?

Andrew
22.03.2018
13:44:51

Yaroslav
22.03.2018
13:45:27

Andrew
22.03.2018
13:46:36

Yaroslav
22.03.2018
13:47:22

Andrew
22.03.2018
13:49:01

Yaroslav
22.03.2018
13:50:03

Andrew
22.03.2018
13:51:35

Staysha
22.03.2018
14:32:37
подскажите, плз
есть массив json объектов, типа {{"a" : "foo1", "foo2"}, {"b": "boo1", "boo2"}}. Надо по значению boo2 вывести всю строку, верхние значения изначально неизвесты
что-то не могу догнать как это сделать..
ну, пожалуйста((

Denis
22.03.2018
15:05:07
у вас json невалидный

Staysha
22.03.2018
15:05:38
как быть?

Darafei
22.03.2018
15:06:29
прочитать спецификацию json

Staysha
22.03.2018
15:07:39
?

Anton [Mgn, az09@osm]
22.03.2018
15:09:26
кареглазая Сташа получает отпор от жестоких но справедливых знатоков жсон
или Стяша? )
Стейша?

Staysha
22.03.2018
15:10:49
не важно
главное в короткие сроки изучить json и что-то с этим сделать