@pgsql

Страница 646 из 1062
Mikhail
24.01.2018
15:20:34
Что такое _нагруженное_ ?!

Я вас просил показать как и что вы воспроизводите ?!

Google
Maksim
24.01.2018
15:21:55
а сруза после, если прошел таймаут
Вы написали, что циклические insert (как я понял, в транзакциях один insert) на клиенте рвутся. Т.е. клиентское соединение не перекидывается прозрачно на другой коннект пула?

Yaroslav
24.01.2018
15:23:05
Одно дело - когда клиент пытается приконнектится к базе и у него это не получается за заданный таймаут. Тогда работать с базой нельзя. Другое дело, когда он посылает запрос и получает ответ не через 0.1msec, а через 10msec. Ну или даже секунду. Проблема в том, что пока есть активные клиенты и их число больше чем ограничение на число сессий, то нового просто не пустят. Даже если клиенты тупо рвут коннекшины после каждого стайтмента, всё равно нет никакой гарантии, что клиенту удасться установтить соединение с сервером за N попыток с некторым таймаутом.
Один таймаут: "Одно дело - когда клиент пытается приконнектится к базе и у него это не получается за заданный таймаут." Второй таймаут: "Другое дело, когда он посылает запрос и получает ответ не через 0.1msec, а через 10msec. Ну или даже секунду." Чем один "краше" другого? Почему в первом случае работать с базой нельзя? А во втором случае эта ситуация (нет свободного соединения) для приложения выглядеть как session/query timeout, и оно точно так же будет считать соединение "мёртвым", нет?

Mikhail
24.01.2018
15:25:19
Я вас просил показать как и что вы воспроизводите ?!
Я выше писал как можно воспроизвести

Что такое _нагруженное_ ?!
Вставки большие были каждые 100 мс

Maksim
24.01.2018
15:26:13
Я выше писал как можно воспроизвести
приведите лучше весь скрипт с настройками баунсера, если не сложно

Mikhail
24.01.2018
15:26:36
Если бы я мог, давно бы сделал :)

Mikhail
24.01.2018
15:28:52
Если бы я мог, давно бы сделал :)
То что вы описываете , это тогда не относится к пгбаунсеру

Mikhail
24.01.2018
15:29:34
А к чему, если после смены типа пулинга проблема ушла?

Mikhail
24.01.2018
15:29:36
Это какая-то ваша частная проблема с приложением и/или настройками tcp

Google
Mikhail
24.01.2018
15:30:11
Иначе смена пулинга не помогла бы

Mikhail
24.01.2018
15:30:14
А к чему, если после смены типа пулинга проблема ушла?
Так как вы ничего не можете показать , то и обсуждать нечего

Иначе смена пулинга не помогла бы
Вообще не факт что это вам помогло

Mikhail
24.01.2018
15:30:35
Ну хорошо :)

Вообще не факт что это вам помогло
Не знаю, но крайне вероятно

Mikhail
24.01.2018
15:31:06
Taras ?
24.01.2018
20:49:58
добровечер, подскажите-помогите пожалуйста с маленьким вопросом у меня в таблице имеется "params" integer[] , в записях встречается, к примеру, {1,2,7} {2,9,3} {3,5,1} {2,5,13} как мне достать все записи, где в поле params встречается 3? ... WHERE ?

Denis
24.01.2018
20:51:04
params @> ARRAY[3]

https://www.postgresql.org/docs/9.6/static/functions-array.html

Taras ?
24.01.2018
20:52:53
благодарю понял, похоже как и с ltree

KizzarU
24.01.2018
22:40:26
Лучший новостной-инсайдерский канал в Telegram! ? https://t.me/SharkCIA Там Вы найдете: ? Ежедневный поток полезной информации. ? Аналитические статьи. ? Интересные факты. ? И многое другое! ? Целый путеводитель к успеху в вашем телефоне. ▪️Присоединяйся к каналу: ▪️https://t.me/SharkCIA

Междоус
25.01.2018
07:49:41
Всем привет. У нас pg 9.6. Предисловие: До вчера работала стриминговая репликация нормально. Но сломались индексы groonga на мастере(реально не нашли причин) и в таком виде они переехали на слейв. На мастере ингдексы вылечили удалением файлов индекса и переиндексацией. На слейве было все также плохо. Проблема: Переделали реплику. Удалили старую, создали заново. Норм всё. Но почему-то на слейве у всех счетчиков значение больше на 32 чем на мастере. Как лечить?

Ну или куда смотреть?

Yaroslav
25.01.2018
08:20:57
Ну или куда смотреть?
Каких счётчиков?

Междоус
25.01.2018
08:21:31
Каких счётчиков?
sequence. которые самые обычные

Yaroslav
25.01.2018
08:22:00
sequence. которые самые обычные
А какая Вам разница? Всё равно slave read-only, нет?

const
25.01.2018
08:22:20
Каких счётчиков?
у нас берется last_value от сиквенса

Междоус
25.01.2018
08:22:35
А какая Вам разница? Всё равно slave read-only, нет?
Да. И у нас счетчиков много и от них зависят данные. Выборки не работают, не то возвращают и в таком духе

Google
Yaroslav
25.01.2018
08:22:54
у нас берется last_value от сиквенса
Зачем? И да, если у Вас что-то важное от этого зависит —- это ошибка дизайна. :(

const
25.01.2018
08:23:40
Зачем? И да, если у Вас что-то важное от этого зависит —- это ошибка дизайна. :(
чтобы не тащить из БД кучу данных, которые ограничены только сверху, мы решили ограничить их еще и снизу, берем last_value от счетчика - 100

Междоус
25.01.2018
08:25:37
Зачем? И да, если у Вас что-то важное от этого зависит —- это ошибка дизайна. :(
Про дизайн: Как делать последовательность значений, чтобы не повторялось значение в куче асинхронных/разнесенных обработчиков? БД это делает легко. Засунули значение, инкременгт счетчика, RETURNING *

Arthur
25.01.2018
08:34:11
sequence. которые самые обычные
Вот тут есть небольшое пояснение https://www.postgresql.org/message-id/CA%2BU5nMLrdpv2oAY6%2BV0nCugwfFg%2BXFucdk1OZGZOgViCb3%2BkKg%40mail.gmail.com

Subb98
25.01.2018
08:41:25
Добрый день. Я почти закончил реализацию фичи по получению новых тем для каждого пользователя. Вот запрос на чистом SQL: http://rextester.com/XTMQV15104 Вопрос у меня следующий. Представим, что у нас накопилось 33000 тем (topics) и зарегистрировалось 17500 пользователей (users). Следовательно, в таблице participants при таких числах может быть 577 500 000 записей. Вопрос в том, насколько это хреновое решение и насколько оно будет медленно работать?

При относительно небольшом кол-ве тем / пользователей мы получим огромное кол-во записей в таблице m2m. Можно ли как-то это оптимизировать?

Lev
25.01.2018
09:03:14
почему бы не хранить просто дату создания/обновления темы и дату последнего просмотра пользователя. И возвращать все темы новее даты конкретного пользователя?

Subb98
25.01.2018
09:05:11
Так и есть. Но дату просмотра этой темы нужно хранить для каждого конкретного пользователя.

Вот и получается, что, например, имея 2 темы и 2 пользователей, мы получаем уже 4 записи.

Смотрю сейчас таблицу для phpBB, там то же самое. -_- https://wiki.phpbb.com/Table.phpbb_topics_track

Let Eat
25.01.2018
09:08:01
Так и есть. Но дату просмотра этой темы нужно хранить для каждого конкретного пользователя.
Вы слишком педантичны. Зачем мне знать смотрел ли я тему на 100й странице форума?

Lev
25.01.2018
09:08:01
не надо хранить дату просмотра каждой темы, если их много. Все темы старше последнего захода считать просмотренными и всё..

Let Eat
25.01.2018
09:09:55
Вы хотите хранить статус просмотра каждой темы каждым пользователем. Я и спрашиваю а надо ли прям КАЖДОЙ? Например те темы что на 100й странице нет смысла уже

Subb98
25.01.2018
09:10:34
А, понял вас теперь. Я думал, вы говорите про страницы внутри самой темы, пардон.

Darafei
25.01.2018
09:10:35
храните все и потом напишите кронджобу, которая будет подчищать

Google
Darafei
25.01.2018
09:11:06
если надо будет

Subb98
25.01.2018
09:11:18
Благодарю, в целом, смысл ясен. =)

Darafei
25.01.2018
09:12:03
nodata ваш друг, большинство тем будет никогда не просмотрено

так что хранить надо будет только темы, в которые юзер заходил

Subb98
25.01.2018
09:12:27
+

Зайдёт - будет отметка.

Alex
25.01.2018
09:14:04
А в Питере есть свободные DBA ? Зарплатная вилка 80-150, писать в личку.

Let Eat
25.01.2018
09:14:47
Это как свободные каменщики?

Alex
25.01.2018
09:15:06
ну кто находится в поиске работы :)

Alex
25.01.2018
09:37:54
как есть…

Ilia
25.01.2018
09:38:22
А в Питере есть свободные DBA ? Зарплатная вилка 80-150, писать в личку.
Ну детяли дал бы... А то каждому в личке писать...

(я не DBA нифига, я разработчик)

Alex
25.01.2018
09:38:44
есть постгрес его надо админить :)

Alexander
25.01.2018
09:43:53
ну кто находится в поиске работы :)
Вот тут можете ещё спросить - @itrecruitergroup

Alex
25.01.2018
09:46:01
Спасибо за совет.

Спрашивали описание вакансии: https://spb.hh.ru/vacancy/24009379?query=%D0%90%D0%B4%D0%BC%D0%B8%D0%BD%D0%B8%D1%81%D1%82%D1%80%D0%B0%D1%82%D0%BE%D1%80%20%D0%B1%D0%B0%D0%B7%20%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Mike Chuguniy
25.01.2018
09:54:43
> Опыт работы с Astra Linux. > Опыт работы с PostgreSQL 9.3 под Astra Linux. Астра... Русбитех. Мои соболезнования. Особенно при наличии требований всей и всяческой секретности, основанной на мандатном доступе - весело у них там.

Alex
25.01.2018
09:56:48
не скучно, да :)

Google
Subb98
25.01.2018
10:09:04
Да, я пока остановился на данном решении. У меня в любом случае будет не чистый запрос, я пишу на Laravel, там будет использоваться Eloquent ORM.

Сейчас покажу..

А если бы был чистый SQL, что бы Вы порекомендовали оптимизировать в данном запросе?

https://hastebin.com/umixokapos.php

Yaroslav
25.01.2018
10:18:25
А если бы был чистый SQL, что бы Вы порекомендовали оптимизировать в данном запросе?
Во-первых, сделать подходящие для выборки индексы. Во-вторых, я бы попробовал: 1. Использовать EXISTS вместо JOIN (у Вас из participants ничего не выбирается, и вряд ли Вам нужны дубликаты в результатах). 2. Разбить его на (темы с участием пользователя) UNION ALL (остальные темы). 3. После этого смотреть планы / сравнивать на реальных данных.

Subb98
25.01.2018
10:20:17
Благодарю. Изначально у меня было два запроса + union, но мне сказали, мол, union лишний. Я их тогда объединил.

Ilia
25.01.2018
10:21:14
Yaroslav
25.01.2018
10:23:25
Благодарю. Изначально у меня было два запроса + union, но мне сказали, мол, union лишний. Я их тогда объединил.
Да, OR / UNION [ALL] —- это варианты выражения той же самой логики. Проблема только в том, что в некоторых СУБД (включая PostgreSQL) JOIN-ы по OR зачастую плохо оптимизируются.

Ilia
25.01.2018
10:23:41
Там не JOIN

Но всё равно хреново

Вот на чистом SQL: http://rextester.com/XTMQV15104
Так ты это только что показывал

Subb98
25.01.2018
10:25:11
Так ты это только что показывал
Да, верно. Просто я подумал, мб, Вы это не видели, раз не поняли логики в билдере.

Ilia
25.01.2018
10:25:42
Благодарю. Изначально у меня было два запроса + union, но мне сказали, мол, union лишний. Я их тогда объединил.
Зря. UNION ALL был бы лучше. У этого запроса ещё одна проблема, ка кя подозреваю. Дело скорее в том, что этот запрос вообще не нужно выполнять, он не выдаёт никакие полезные данные.

Subb98
25.01.2018
10:26:01
Второй?

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