В этой проблеме есть что-то довольно подозрительное. вы заявили:
Если допустимо только обновлять таблицу каждые 4 или 5 секунд, то вы неизбежно будете «недостающей» обновление, а значение count
и last_date_time
будет устареть, если вы спросили его.
Хуже все еще (возможно), если ваша система сработает через 4,9 секунды после последнего обновления, ваша система полностью потеряет несколько тиков счета.
Если эти аномалии материи, то у Вас нет никакого выбора, кроме как синхронно сохраняются значения count
и last_date_time
по каждому sing(...)
запросу.
Но если они не имеют значения, зачем хранить эту информацию в базе данных? Почему бы вам просто не сохранить все это в памяти и признать, что счетчики сброшены, когда сервер аварийно завершает работу и перезагружается? Или, если вам нужно вести учет в целях учета, почему бы вам не писать события «play (id)» в специальный файл журнала и генерировать учетные записи при автономном сканировании журналов.
Кстати, 200 обновлений в секунду не является необоснованным, особенно если таблица мала, и вы сделать некоторые настройки.
я могу позволить себе задержку 4-5 секунд в Updation записей. .... Если сбой сервера, где приложение развернуто, тогда и мы можем поместить некоторую логику .. что-то вроде .... если значение счета равно нулю для конкретного идентификатора воспроизведения ... выберем последний счет из БД и затем увеличим его к одному.
Существует значительный недостаток в этом подходе. В промежутке между последним обновлением и сбоем приложения могут быть нулевые «пьесы» или «игра» или многие «игры» для любой данной песни. Когда приложение вернется, оно просто не будет знать, что эти «пьесы» были ... и он не знает, если они не были зарегистрированы где-то.
Мы сохраняем эту информацию в базе данных, потому что по этим записям нам нужно извлекать записи, например, сколько игрового идентификатора играли за это время (что-то).
Большой вопрос ... который вы не ответили ... это имеет ли, если вы не считать некоторых «играет» иногда.
- Если это не имеет значения, то кеширование и обновление каждые несколько секунд в порядке.
- Если это действительно имеет значение, то это решение неприемлемо, потому что будет потерять некоторые игры при определенных обстоятельствах.
Альтернатива (как я уже говорил) - настройка базы данных; например выберите наиболее подходящие типы/индексы базы данных/таблицы и настройте SQL или хранимую процедуру, используемую для обновления. 200 обновлений в секунду не чрезмерно дорого, если вы правильно настроили базу данных.
Если я сталкивался с раствором, в котором мое выступление не влияет много, то obeviously нет.
Если это (действительно) случай, то просто перейдите с подходом «сохранить каждые 5 секунд». Или если вам нужна более высокая производительность «5 минут» или «5 часов».
На самом деле не думайте, что вы действительно понимаете, о чем я прошу ... потому что это НЕ очевидно (кому-то, кто не понимает ваш бизнес), что это не имеет значения, и производительность действительно не должна быть что касается ответа вообще. Это имеет значение, или нет.
Позвольте мне ставить вопрос по-другому:
«Будет ли это повредить ваш бизнес, если подсчеты были неточны»?
- это сообщения, обновленные между ними - т. Е. Требуется ли все запрос для его извлечения из db или может быть кэширован каким-то образом? – Nrj
даже я тоже не знаю .. потому что это логика медиа-сервера .... сценарий ... мое приложение ... мой сервер ... и еще один медиа-сервер. Я ограничен до мой сервер ... – VJS
Думаю, вы можете это разъяснить. В противном случае я бы рекомендовал подумать о решении Андрея. – Nrj