powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос по производительность UPDATE
9 сообщений из 9, страница 1 из 1
Вопрос по производительность UPDATE
    #39153390
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Я реализую мессенджер, типа как на фейсбуке или в контакте.

У меня есть таблица Message и таблица Thread.

Мне надо реализовать запрос, который будет выдавать Threads с последним вообщением в нем.

Я хочу сделать денормальзацию, чтобы когда пользователь будет посылать сообщение оно записывается в Message и также обновяется колонка соответствующего Thread где будет храниться только последнее сообщение.

Вопрос: На сколько затратна операция UPDATE в Postgresql ?
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39153410
p2.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClosiusВопрос: На сколько затратна операция UPDATE в Postgresql ?Средняя по больнице стоимость апдейта - полкопейки.
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39153750
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClosiusДобрый день.

Я реализую мессенджер, типа как на фейсбуке или в контакте.

У меня есть таблица Message и таблица Thread.

Мне надо реализовать запрос, который будет выдавать Threads с последним вообщением в нем.

Я хочу сделать денормальзацию, чтобы когда пользователь будет посылать сообщение оно записывается в Message и также обновяется колонка соответствующего Thread где будет храниться только последнее сообщение.

Вопрос: На сколько затратна операция UPDATE в Postgresql ?


текст запроса дай, и определение таблицы, я тебе скажу как сложно это будет.
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39153814
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
SELECT  messenger_message.thread_id,
                            MAX(messenger_message.datetime_post),
                            COUNT(DISTINCT(messenger_message.id)),
                            array_agg(DISTINCT(messenger_thread_participants.user_id))
                      FROM messenger_message, messenger_thread_participants WHERE
                            messenger_message.thread_id IN (
							                  SELECT thread_id
							                  FROM messenger_thread_participants
							                        WHERE user_id = 354
							                         AND is_subscribed = TRUE ) AND
                            messenger_thread_participants.thread_id = messenger_message.thread_id
                            AND messenger_message.datetime_post <= '2016-01-12T21:47:13.441Z'::timestamp
                            AND messenger_message.datetime_post > messenger_thread_participants.datetime_unsubscribe
                      GROUP BY messenger_message.thread_id
                      ORDER BY MAX(messenger_message.datetime_post) DESC
                      LIMIT 10 OFFSET 20;
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39153815
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
messenger_thread_participants:
    user = models.ForeignKey(User)
    thread = models.ForeignKey(Thread)
    is_subscribed = models.BooleanField()
    datetime_unsubscribe = models.DateTimeField(db_index=True)

messenger_message:
    text = models.TextField()
    sender = models.ForeignKey(User)
    thread = models.ForeignKey(Thread)
    is_read = models.BooleanField()
    datetime_post = models.DateTimeField(db_index=True)
    is_deleted = models.BooleanField()
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39153816
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Ой блиин... Это не то.. Ну точнее это выдача тредов.. то но не то.. Извиняюсь.. много пива выпил..
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39154061
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВопрос: На сколько затратна операция UPDATE в Postgresql ?

ClosiusMasterZiv,

Код: plaintext
1.
 SELECT   messenger_message.thread_id,



Ну и чего я об этом должен думать ?
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39154064
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ClosiusЯ хочу сделать денормальзацию, чтобы когда пользователь будет посылать сообщение оно записывается в Message и также обновяется колонка соответствующего Thread где будет храниться только последнее сообщение

Ссылка там должна быть на последнее сообщение, а не сообщение.

UPDATE-а производительность будет O( log(N) ) где N -- число ниток (Thread). Это при условии наличия индекса на PK в Thread (thread_id).
Ну т.е. очень быстро .
...
Рейтинг: 0 / 0
Вопрос по производительность UPDATE
    #39154187
Closius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv,

Спасибо! Идея понятна, но как быть с кол-во непрочитанных сообщений? Отдельный запрос.. Ладно в общем надо это все проверять на практике на нагрузке. Как будет нагрузка понятно как оптимизировать. Спасибо :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Вопрос по производительность UPDATE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]