@pgsql

Страница 742 из 1062
Ilia
04.04.2018
06:59:15
CREATE INDEX session_id_idx ON golang (session_id);
Индекс не уникальный. Так? Сколько записей на одно значение session id в таблице (в среднем)

Sergey
04.04.2018
07:00:03
Таблица большая более 10тыс

Ilia
04.04.2018
07:02:04
Это маленькая . Меня интересует не таблица, а именно записей на одно значение session

Размер самой таблицы не важен

Google
Ilia
04.04.2018
07:09:08
Одна это уникальный токен
А почему у тебя ИНДЕКС НЕ уникальный?

Да лучше идет.
Да не рассказывай .

Аггей
04.04.2018
07:11:16
А чего, скан по такому индексу лучше будет?
При таком текстовом токене не уверен - при сравнении достаточно длинных текстовых сообщений (символов в 100) - hash индекс в нашем случае работал быстрее

Аггей
04.04.2018
07:12:18
Сейчас найду историю переписки. Может планы даже до и после

Dmitry
04.04.2018
07:14:40
А hash индекс уже научился реплицироваться?

Ilia
04.04.2018
07:15:28
Сейчас найду историю переписки. Может планы даже до и после
Просто времена примерно одинаковые должны быть, что там что там. O(1+) и O(log N). Почти одно и то же. И ты советуешь при СКАНИРОВАНИИ Таблицы применять хэшиндекс, а он так наоборот не должен работать. Я ещё понимаю, где там в запросе сканирование, но просто странный совет.

Alexey
04.04.2018
07:18:38
Amir
04.04.2018
07:18:55
всем привет, подскажите что может быть из неявного, причины почему индекс, практически в монопольном режиме, на таблице в 22млн записей не может создаться более 22 часов?

Google
Vladimir
04.04.2018
07:19:16
Ilia
04.04.2018
07:19:17
Ну, большая таблица же

Amir
04.04.2018
07:19:26
индекс условный btree(id) where полеN is not null

Ilia
04.04.2018
07:20:00
Там время 0.8 миллисекунды, а не микросекунды. но, да, всё дело в server-prepared
Я описался. В голове было МИЛИ. И это всё ещё шикарное время.

Amir
04.04.2018
07:20:03
да для нас вроде и не большая, есть и больше

на этой таблице правда параход индексов

Ilia
04.04.2018
07:20:51
да для нас вроде и не большая, есть и больше
Ну всю таблицу надо читать всё равно, и писать индекс. Другие индексы на данный влиять не будут.

Amir
04.04.2018
07:21:15
какие параметры в настройках надо проверить, бд тестовая недавно развернутая

?

Ilia
04.04.2018
07:22:31
Размер Кэша, но он не очень сильно будет влиять.

И•л•ь•д•а•р ☕
04.04.2018
07:22:31
кто ставил pgadmin4 на сервак?, подскажите как ему подключить сертификаты чтобы он по https работал

Amir
04.04.2018
07:30:00
autovacuum_work_mem -1 kB maintenance_work_mem 4194304 kB work_mem 131072 kB effective_cache_size 524288 8kB

Аггей
04.04.2018
07:30:42
А характеристики сервера?

Ilia
04.04.2018
07:31:23
Там ещё что-то про сортировку можно бы потюнить...

Но я не знаю что.

НАшёл

https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-WORK-MEM

Аггей
04.04.2018
07:33:26
pgtune + на время индексирования maintenance_work_mem побольше. Про остальное не подскажу. Надо смотреть утилизацию CPU при построении индекса - если у вас iowait - то явно не умещается индекс в maintenance_work_mem - надо поднимать

Google
Amir
04.04.2018
07:33:58
cat /proc/meminfo MemTotal: 16268356 kB MemFree: 433164 kB MemAvailable: 15436532 kB Buffers: 55936 kB Cached: 15120648 kB SwapCached: 36 kB Active: 8753892 kB Inactive: 6514656 kB Active(anon): 99952 kB Inactive(anon): 224032 kB Active(file): 8653940 kB Inactive(file): 6290624 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 2097148 kB SwapFree: 2096596 kB Dirty: 364 kB Writeback: 0 kB AnonPages: 91968 kB Mapped: 238056 kB Shmem: 232020 kB Slab: 422144 kB SReclaimable: 397144 kB SUnreclaim: 25000 kB KernelStack: 2800 kB PageTables: 9420 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 18365504 kB Committed_AS: 2685880 kB VmallocTotal: 34359738367 kB VmallocUsed: 176916 kB VmallocChunk: 34359341052 kB HardwareCorrupted: 0 kB AnonHugePages: 40960 kB HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 85952 kB DirectMap2M: 3059712 kB DirectMap1G: 15728640 kB

Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz stepping : 1 microcode : 0xb000014 cpu MHz : 2094.048 cache size : 40960 KB 4 ядра

Ilia
04.04.2018
07:36:33
autovacuum_work_mem -1 kB maintenance_work_mem 4194304 kB work_mem 131072 kB effective_cache_size 524288 8kB
в work mem гиг там кинь, а всё остальное в buffers (10-20% памяти оставь операционке)

Amir
04.04.2018
07:37:10
физ?

Аггей
04.04.2018
07:37:27
MemTotal: 16268356 kB

Ilia
04.04.2018
07:37:55
да

Это 16 гигоу?

ну гиг оставь операционке, гиг на work mem, 12 в кэш. Остальное на конфеты...

Amir
04.04.2018
07:39:25
если накидываю и перечитываю конфиги, то текущее создание индекса прервется уже

?

Евгений
04.04.2018
07:39:32
Коллеги, подскажите, пожалуйста. У меня есть БД . К БД обращается сервер 2200 раз в сек и получает информацию. Порядка 99% информации не изменяется , хранится статично. Каким образом (какие технологии) можно закешировать редко изменяемую информацию БД, чтобы сервер обращался не в БД, а в кеш. Тем самым ускорить получении информации. Но при изменении данных в БД, должен обновляться кещ либо сервер должен брать измененную инфу из БД.

Евгений
04.04.2018
07:43:58
СУБД итак кеширует данные за вас. Это не считая ещё дисковых кешей и кеша ОС.
Тоесть если я буду делать 2200 селектов в секунду , каждый селект возращает строку со 100 полями, это для Postgres не проблема, верно?

Аггей
04.04.2018
07:44:32
ну гиг оставь операционке, гиг на work mem, 12 в кэш. Остальное на конфеты...
Из доки Для большинства методов индексов скорость создания индекса зависит от значения maintenance_work_mem. Чем больше это значение, тем меньше времени требуется для создания индекса (если только заданное значение не превышает объём действительно доступной памяти, что влечёт за собой использование подкачки).

Ilia
04.04.2018
07:45:10
Amir
04.04.2018
07:46:24
Ребята спасибо, пошел, тюнить) индекс лучше заново пересоздать?

наврятли он переживет переделку конфига

Google
Евгений
04.04.2018
07:48:58
Не проблема. Другой вопрос, зачем нужны такие запросы.
В БД хранятся конфиг файлы. Клиенты запрашивают их у сервера.

Andrey
04.04.2018
07:49:46
В БД хранятся конфиг файлы. Клиенты запрашивают их у сервера.
Зачем так часто? Если это разные клиенты, то у них у всех одинаковые конфиги, выходит?

crux
04.04.2018
07:52:12
Риторический вброс: хранить конфиги в БД вообще моветон, лучше их хранить именно в файлах, хоть в JSON и раздавать как статику nginx-ом. Нереально снизит нагрузку. Но, видимо, это тот случай, когда "так исторически сложилось"?

Amir
04.04.2018
07:52:29
сказали что на продуктиве 256гб оперативки так что норм сейчас на время создания до 12 поднимем maintenance_work_mem и будем ждать

Dmitry
04.04.2018
07:56:11
ну гиг оставь операционке, гиг на work mem, 12 в кэш. Остальное на конфеты...
Гиг на work_mem - это как? work_mem - это память под сортировки КАЖДОЙ сессии. С таким раскладом 16 гиг кончатся быстро )))

Sergey
04.04.2018
07:56:53
Евгений
04.04.2018
07:57:41
Зачем так часто? Если это разные клиенты, то у них у всех одинаковые конфиги, выходит?
Конфиги частично разные. Частые запросы нужны для оперативного управления. Возникла внештатная ситуация - изменил конфиги в БД и через минуту все клиенты поднялись. Мы видим это как-то так

Ilia
04.04.2018
07:58:17
Гиг на work_mem - это как? work_mem - это память под сортировки КАЖДОЙ сессии. С таким раскладом 16 гиг кончатся быстро )))
Да это всё равно грубый набросок, ему всё равно надо будет более детально думать

Admin
ERROR: S client not available

Dmitry
04.04.2018
07:59:21
Я бы начал с 25% RAM для буферного кеша, а не с 75%

Artem
04.04.2018
07:59:26
SELECT DISTINCT orders.order_id, CASE WHEN (orders.tip_id IS NOT NULL AND orders.customer_id = the_company()) THEN COALESCE(orders.tip_date, orders.current_req_for) ELSE COALESCE(orders.current_jobdate, orders.current_req_for) END as jobdate FROM orders WHERE orders.service_id NOT IN (7100,4100,7200,1000,8100) ORDER BY jobdate DESC NULLS LAST, order_id DESC LIMIT 100 OFFSET 0 как можно улучшить: CASE WHEN (orders.tip_id IS NOT NULL AND orders.customer_id = the_company()) THEN COALESCE(orders.tip_date, orders.current_req_for) ELSE COALESCE(orders.current_jobdate, orders.current_req_for) END as jobdate так как на нее уходит основное время запроса

crux
04.04.2018
08:00:44
Конфиги частично разные. Частые запросы нужны для оперативного управления. Возникла внештатная ситуация - изменил конфиги в БД и через минуту все клиенты поднялись. Мы видим это как-то так
Можно отправлять бекендом эвент обновления конфига клиентам, в случае изменений, и тогда ничего не нужно опрашивать 2200 раз в секунду.

Artem
04.04.2018
08:01:55
Покажите план.
https://explain.depesz.com/s/Nqxz

Dmitry
04.04.2018
08:03:11
У вас секскан и сортировка тяжелая без индекса. Case тут не при чём

Amir
04.04.2018
08:04:08
ипопея с долгим индексом: накинули память, то создание отменил, точнее кинул отмену, но запрос все равно висит в активе это видимо тоже надолго?

Google
Artem
04.04.2018
08:05:11
У вас секскан и сортировка тяжелая без индекса. Case тут не при чём
спасибо, но на service_id есть индекс я думаю планировщик выбирает сам секскан

Amir
04.04.2018
08:05:16
пробовал pg_cancel_backend и pg_terminate_backend

Amir
04.04.2018
08:06:13
нет, поскольку накат ченжей подразумевает условную монополию, то индексы без конкурентли

локов нет)

Сергей
04.04.2018
08:09:27
Пруф что без локов

Dmitry
04.04.2018
08:09:38
нет, поскольку накат ченжей подразумевает условную монополию, то индексы без конкурентли
А в чём противоречие конкурентного создания индекса и монопольного наката изменений?

спасибо, но на service_id есть индекс я думаю планировщик выбирает сам секскан
А если без сортировки и без лимита, индекс используется?

Artem
04.04.2018
08:12:36
Dmitry
04.04.2018
08:14:10
Потому чтовозможно, у вашего условия низкая селективность для использования индекса.

Количество записей, которые надо выбрать значительно больше тех, которые отбрасываются по вашему условию

Amir
04.04.2018
08:15:57
А в чём противоречие конкурентного создания индекса и монопольного наката изменений?
монопольное условное, просто во время наката подразумевается что никто не работает с прикладом

соответственно эта таблица не используется, нет блокировок

можно индекс делать без конкрурентли

мы просто на тесте тестируем переход на новую версию

приклада

Dmitry
04.04.2018
08:17:19
Т.е. вы отключаете пользователей, обрубаете сессии в момент наката?

Amir
04.04.2018
08:18:11
да это достаточно редкое явление) примерно раз в месяц

обновление релиза

но если индекс будет долго создаваться, мы не успеем в рамки отведенного времени

там тонна ченжсетов

Dmitry
04.04.2018
08:19:54
Это на тесте/стейдже он у вас долго создаётся?

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