@pgsql

Страница 723 из 1062
Nikolai
22.03.2018
10:31:51
Artem
22.03.2018
10:32:29
а есть статистика по количеству запросов на чтение/запись?

Nikolai
22.03.2018
10:35:31
а есть статистика по количеству запросов на чтение/запись?
так как мы не логируем запросы короче 100мс, то ответить "да" не получится но примерно 90/10 Read-Write

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
analyze кластеру сделали?
сделали ещё раз. Без изменений

Darafei
22.03.2018
10:40:48
вопрос: включен autovacuum, делается elapsed 606.95 sec. Сильно ли при включенном автовакуме падает производительность?
а что значит "включенный автовакуум", его нельзя выключать, нужно настраивать, если есть проблемы

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
Pavel
22.03.2018
10:48:51
вывод: кто-то скинул какие-то цифры в чат и хочет объяснений без описания проблемы
проблемы нет. Написал же что это pg_statio_all_tables хотелось бы узнать о чем эти цифры

Google
Nikolai
22.03.2018
10:48:56
а количество запросов 100+мс выросло? в них есть намёки?
особого роста нет, топ запросов тот же просто пропорциональный рост времени

Darafei
22.03.2018
10:50:46
проблемы нет. Написал же что это pg_statio_all_tables хотелось бы узнать о чем эти цифры
вторая ссылка в гугле даже по-русски: https://postgrespro.ru/docs/postgrespro/10/monitoring-stats#PG-STATIO-ALL-TABLES-VIEW

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
вторая ссылка в гугле даже по-русски: https://postgrespro.ru/docs/postgrespro/10/monitoring-stats#PG-STATIO-ALL-TABLES-VIEW
Видимо нужно было спросить хорошо когда количество дисковых блоков, прочитанных из этой таблицы/Число попаданий в буфер для этой таблицы = 42 доку читал

Nikolai
22.03.2018
11:01:37
можно погрепать лог на этот pid
почти 90к запросов, в них ничего необычного; несколько тяжёлых сканов из админки, которым сто лет в обед

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
тебе бы индекс на story_id, type where removed_at is null
спасибо. индекс на story_id, type - понятно. А индекс на removed_at is null - это индекс на null значение?

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

Andrew
22.03.2018
11:13:26
partial index, ты можешь привязать к индексу условие
супер! Пойду почитаю. Благодарю

Google
Evgeniy
22.03.2018
11:16:19
тебе бы индекс на story_id, type where removed_at is null
только тайп и стори местами поменять

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
Чет я на графики поглядел. Число временных файлов стало меньше, количество записи больше - есть стойкок ощущение, что у вас просто БД стала обрабатывать больше запросов в секунду.

Nikolai
22.03.2018
11:47:30
Чет я на графики поглядел. Число временных файлов стало меньше, количество записи больше - есть стойкок ощущение, что у вас просто БД стала обрабатывать больше запросов в секунду.
увы, но сейчас она обрабатывает те же 80-90М в сутки (при пике в почти 200) И даже в пике мы не получали проблем с IO, Только с cpu

Аггей
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 протоколе

но не хочеться лишнего сервиса :)

Наверно если обернуть поверх в TLS, компрессию можно получить за так
ну или хотябы уровень компрессии регулировать :)

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
А где тут topN? Я не вижу ORDER BY в CTE...
Я вытаскиваю список story_id с наибольшим количеством типов “type”. Почему это не topN задача?

Yaroslav
22.03.2018
13:06:54
Я вытаскиваю список story_id с наибольшим количеством типов “type”. Почему это не topN задача?
Потому что либо не вытаскиваете, либо я чего-то не вижу. Почему вы думаете, что именно с наибольшим? Где ORDER BY?

Andrew
22.03.2018
13:08:53
Потому что либо не вытаскиваете, либо я чего-то не вижу. Почему вы думаете, что именно с наибольшим? Где ORDER BY?
потому что такой запрос выводит список упорядоченный по count от большего к меньшему с уникальным story_id

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
возможно да, для упорядоченности, надо добавить еще order by
Не можно, а нужно. ;) А так у вас 5 случайных групп выбирались.

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

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
Он по-прежнему неправильный, разве нет? Вы сначала (в CTE "top") выбираете 5 _произвольных_ story_id. Это именно то, что нужно?
хм. Мне нужно из статусов вытаскивать все статусы с одинаковым типом, группировать их по story_id, подсчитывая сколько получилось статусов у каждого story_id, и вывести список stories, упорядоченный по количеству записей и свойству stories(order)

Andrew
22.03.2018
13:46:36
Тогда зачем "limit 5" в CTE?
потому что мне нужны все story_id, а только первые пять. Ааа, лимит нужно ставить вне CTE?

Yaroslav
22.03.2018
13:47:22
потому что мне нужны все story_id, а только первые пять. Ааа, лимит нужно ставить вне CTE?
Что такое "первые"? Вот, к примеру, кто из нас первый, я или вы? ;)

Andrew
22.03.2018
13:49:01
Что такое "первые"? Вот, к примеру, кто из нас первый, я или вы? ;)
)) первых 5 stories из списка упорядоченного по “count”

Yaroslav
22.03.2018
13:50:03
)) первых 5 stories из списка упорядоченного по “count”
Так вот и напишите там ORDER BY COUNT(*). PostgreSQL что, сам должен догадаться?

Andrew
22.03.2018
13:51:35
Так вот и напишите там ORDER BY COUNT(*). PostgreSQL что, сам должен догадаться?
и правда. Самое лучшее что можно сделать для правильного написания запросов - это проговорить/написать на обычном языке

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 и что-то с этим сделать

Страница 723 из 1062