|
|
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Сайт знакомств, все сообщения у меня хранятся в одной табличке. кто кому во сколько написал, статус прочитано или нет. Сайт развивается, сообщений все больше и больше. При входе в меню контакты, напротив каждого контакта пишется сколько с этим пользователем сообщений типа Миша 2045(5), Никита 4788(1) где в скобках это не прочитанные письма. Сейчас письма считаются (count)ом. так вот вопрос, не сильно ли вытаскивание этих количественных данных напрягает mysql? Может быть хранить количественны данные в отдельной табличке одним числом для каждого контакта и иногда делать перерасчет? Как это будет выглядеть на практике когда сообщений будет, скажем, на 5 гигабайт. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 09:42 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
имхо, лучше хранить к-ва и изменять при получении/прочтении сообщения. Зачем постоянно считать одно и то же? Хотя предусмотреть процедуру принудительного пересчета тоже не помешает - как административный способ исправить возникшие расхождения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 10:38 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
locky, Спасибо за ответ. 1:0 в пользу хранения количества Кто еще чего-нибудь добавит ?:) Охото сделать сразу так чтобы переделывать не пришлось ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 11:39 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Nekifrovv1:0 в пользу хранения количества лучше счетчик поменяйте, собирайте голоса за постоянный расчет количества при помощи запроса. А то так и застынете на 1:0. Не разводить же для пополнения счетчика тысячи страниц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 12:31 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
iscrafm, Если честно, не понял ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 12:52 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Nekifrovviscrafm, Если честно, не понял ответ. Вы собираете голоса в пользу хранения количества. Но собирать нужно в пользу постоянного расчета, как наиболее нетипичного случая ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 13:51 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Вы собираетесь денормализовать вашу табличку сообщений. Несколько моментов - я абсолютно уверен что табличка сообщений индексирована по пользователю, так что колоссальных выгод вы не получите. Плюсы денормализации - 1 улучшено время отклика 2 уменьшено количество логических чтений если у вас СЕЙЧАС с этим проблемы то игра стоит свеч Минусы - 1 потенциальная дырка - возможность неправильных результатов если цена неправильных результатов небольшая, или временной лаг несущественнен (открыл пользователь свои сообщения, быстро пересчитали их количества) в худшем случае соврем на первом показе. Либо можно пересчитывать расхождения в момент наименьшей загрузки системы. 2 добавочная работа по обновлению агрегатов - просто проследите чтобы не было конкуренции 3 изменение программы и все неприятности с этим связанные. Оптимизация ради оптимизации - зло ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2010, 19:22 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2010, 18:02 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Варианты: 1) COUNT. Работает хорошо только тогда, когда все нужные индексы влезают в память (кэш индексов) и подсчет идет только по ним, без обращения к таблицам. Однако, хорошие проекты обычно растут быстрее, чем среднестатистический объем памяти на сервере. 2) Хранение. Лучше с точки зрения чтения даже в случаях, когда кэшей недостаточно для хранения всей базы в памяти. Но хуже с точки зрения записи, т.к. нужно модифицировать больше данных при добавлении нового сообщения. 3) Гибридный вариант. Хранить одно число за все предыдущее время до начала очередного расчетного периода. Например, до начала текущих суток. Все, что в пределах текущего расчетного периода считать COUNT-ом. Оба величины складывать. Вариант, имхо, обладает плюсами обоих предыдущих вариантов, но сложнее в реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2010, 21:55 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Я бы посоветовал хранить количество, например, в профайле пользователя, инкрементируя его при добавлении ему нового сообщения, и периодический (например - при открытии пользователем раздела "сообщения") их пересчёт. Причина - большое соотношение количества операций чтения/записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 00:53 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
miksoft +1 к 3му ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 01:00 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
Nekiforovvтак вот вопрос, не сильно ли вытаскивание этих количественных данных напрягает mysql? Ну если Вы так хотите, мы все дружно придём к вашему mysql и повыспрашиваем, что именно его напрягает и насколько :) lockyимхо, лучше хранить к-ва и изменять при получении/прочтении сообщения. Насколько я видел, в комбинации MySQL+ISAM это отличный способ быстро и чётко получить неконсистентные данные. Я допускаю, что это исключительно кривые руки разработчиков, но, судя по тому, что это уже несколько лет не могут поправить несколько меняющихся разработчиков, проблема не совсем тривиальна. Ну а конструктивно - в последних сообщениях Винни и miksoft назвали, как я полагаю, наилучшие возможные варианты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 08:44 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
softwarerНасколько я видел, в комбинации MySQL+ISAM это отличный способ быстро и чётко получить неконсистентные данные. Точно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 10:55 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
lockyТочно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п. В проекте, который я регулярно наблюдаю уже больше года, постоянно видно, что update data set value=value+1, выполняемый одновременно с двух рабочих мест, даёт результат +1 вместо +2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 11:54 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
softwarerlockyТочно? Потому как это ж вроде совершенно штатная операция, которая встречается кругом и везде и т.п. В проекте, который я регулярно наблюдаю уже больше года, постоянно видно, что update data set value=value+1, выполняемый одновременно с двух рабочих мест, даёт результат +1 вместо +2.Речь точно об ISAM? или таки о MyISAM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 11:57 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
miksoftРечь точно об ISAM? или таки о MyISAM? Я не настолько понимаю в MySQL, чтобы ответить. Я в данном случае выступаю с позиций наблюдательного пользователя - вижу проект на mysql с нетранзакционным движком, вижу, что время от времени, когда пользователи слишком одновременно нажимают на кнопку, идёт глюк, вижу, что этот глюк уже кучу лет не могут толком исправить, даже ругаться перестали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 12:01 |
|
||
|
Количественные данные, храним или вытаскиеваем из общей базы?
|
|||
|---|---|---|---|
|
#18+
softwarermiksoftРечь точно об ISAM? или таки о MyISAM? Я не настолько понимаю в MySQL, чтобы ответить. Я в данном случае выступаю с позиций наблюдательного пользователя - вижу проект на mysql с нетранзакционным движком, вижу, что время от времени, когда пользователи слишком одновременно нажимают на кнопку, идёт глюк, вижу, что этот глюк уже кучу лет не могут толком исправить, даже ругаться перестали.У MyISAM такого быть не должно. А ISAM давно уже deprecated. А подзапросы эта версия MySQL поддерживает? Их поддержка началась примерно в то же время, когда ISAM стал deprecated. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2010, 12:08 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=74&tid=1542674]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 226ms |
| total: | 389ms |

| 0 / 0 |
