Size: a a a

pgsql – PostgreSQL

2021 June 28

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
Плагин встроенный для zabbix есть в Графане
источник

АЛ

Аггей Лоскутников... in pgsql – PostgreSQL
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
> Во-первых, я не говорил про дополнительно/недополнительно.

Это же я написал про "дополнительно". Имел в виду, что, по сравнению с другими уровнями изоляциями, блокировок serializable не добавляет.

> а правильный serializable без них скорее всего невозможэн теоретически.

И ошибаетесь. ;)

> Кроме того, на практике -- таки блокирует дополнительно

"Блокирует" — это не когда что-то накладывает какие-то locks, это когда что-то чего-то ждёт (обычно, потому, что накладываемые locks конфликтуют). В PostgreSQL (в плане DML) "писатели" никогда не блокируют "читателей" (никакие накладываемые читателями locks не конфликтуют).

> Несложно заметить, что в serializable появилась ещё одна строка, SIReadLock  

Locks этого типа не конфликтуют ни с чем, ждать их ничто никогда не будет → их наличие не добавляет блокировок.

> Когда оно там не находит чего-нибудь -- то с блокировками становится ещё веселее.

Там у Вас нет выборки по unique key, кстати. Да и сильно "веселее" в указанной ситуации не становится, нет (или о чём Вы)?
источник

Д

Дмитрий in pgsql – PostgreSQL
В Postgres есть raise notice/log/debug для вывода сообщений при определенном уровне, который настраивается в postgresql.conf параметрами log_min_messages и client_min_messages (если я верно понимаю). Есть возможность повышения и понижения уровня такого "логирования" на работающей системе (на горячую) для всей системы или для сессии (например вызовом команды в сессии)?
источник

Д

Дмитрий in pgsql – PostgreSQL
Или может есть лучшие практики, как реализовать разные уровни логирования в Postgres?
источник

С

Сергей in pgsql – PostgreSQL
Приветствую. Какие есть варианты реализации системы подсчета не просмотренных сообщений в групповых чатах при нагрузках равнозначных телеграму?

Есть следующие варианты:

1. Вести учет просмотренных сообщений сообщений для каждого пользователя. Создавать запись в таблице message_views, указывая id пользователя и id сообщения, а при необходимости узнать кол-во непрочитанных, проверять, для скольких сообщений чата не записей в message_views. Огроаный недостаток - слишком долгая операция. Если нужно посчитать, к примеру, 1000000 непрочитанных сообщений. 1000000 - приблизительно, максимальное количество сообщений для чата, которое хранит телеграм. Так же и другие варианты с подсчетом кол-ва непрочитанных сообщений, в которых надо использовать COUNT(*)
2. Хранить в отдельном поле кол-во непрочитанных сообщений для каждого участника чата. После отправки сообщения, делать инкремент для каждого пользователя. Недостатки: если, к примеру, есть группа в которой 200 тыс. пользователей, то обновление счетчика для всех пользователей - слишком дорогая операция, но можно обновлять счетчик в несколько итераций, к примеру, для 3-5 тыс. участников за раз.

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

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
Хм для пользователя в чате I’d последнего прочитанного на сервере не достаточно?
источник

V

Valery in pgsql – PostgreSQL
А вариант считать на клиенте не рассматривается?
источник

С

Сергей in pgsql – PostgreSQL
При подсчете на клиенте, нужно либо сразу запрашивать все сообщения в чате (1 миллион), что недопустимо, либо, если пользователь в сети, то делать инкремент на клиенте, но это недопустимо, так как невозможно будет посчитать количество для оффлайн пользователей
источник

С

Сергей in pgsql – PostgreSQL
Было бы достаточно, если бы не нужно было бы отображать количество всех непрочитанных сообщений
источник

V

Valery in pgsql – PostgreSQL
Откуда миллион? Кэш на клиенте и фиксировать последнее полученное сообщение
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
А почему такая модель, что прочитанными / непрочитанными считаются индивидуальные сообщения?
Просто обычно это "дочитал до данного сообщения в чате/теме", мне кажется.
источник

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
Проще просуммировать
источник

V

Valery in pgsql – PostgreSQL
Или такой вариант, да
источник

С

Сергей in pgsql – PostgreSQL
А как быть с несколькими устройствами?
источник

KZ

Konstantin Zaitsev in pgsql – PostgreSQL
Так последнее прочитанное в чате обновляйте на сервере
источник

С

Сергей in pgsql – PostgreSQL
Не совсем вас понял
источник

С

Сергей in pgsql – PostgreSQL
А потом считать сколько новых сообщений в чате после последнего прочитанного сообщения? Если да, то это опять же использовать COUNT(*), что неприемлемо из соображений производительности, так потенциально количество непрочитанных может быть 1 миллион
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Это же я Вам задаю вопрос. ;)
Какого-то мессенджера, в котором можно читать 324, потом 2, потом 12354, потом 32, потом 432, потом 12 сообщение и т.п., и при этом каждое отдельно отмечается как прочитанное, я что-то не помню (это же не e-mail).
источник

V

Valery in pgsql – PostgreSQL
Отобразить на клиенте число непрочитанных сообщений <> посчитать на сервере число сообщений
источник