Я хочу предоставить своим пользователям около 10 различных «статистических данных». Каждая статистика представляет собой счетчик, возвращаемый другим запросом моей базы данных. Каждая статистика / запрос зависит от текущего пользователя. Какой способ добиться этого будет наиболее эффективным? Правильно ли я считаю, что выполнение запросов статистики для каждого пользователя на каждой странице моего сайта (чтобы предоставить им изображение в реальном времени) - не лучший способ сделать это?
Совет оценен.
Редактировать:
Я работаю на основе от 100 до 1000 одновременных пользователей.





Не могли бы вы не хранить значения в кеше в течение нескольких минут? Особенно, если вычисления тяжелые, это повысит производительность при сохранении статистики почти в реальном времени.
Но это зависит от того, сколько у вас пользователей и насколько дороги расчеты.
Все зависит от того, сколько трафика и запросов может обрабатывать ваш сервер, а также от того, как часто эти числа меняются и насколько они должны быть актуальными для пользователей.
ASP.NET предлагает возможность задавать конкретную кэшируемость для элементов управления и изменять кэш в зависимости от идентификатора пользователя или любого другого параметра, который вы хотите, вы можете воспользоваться этим.
Моя первая мысль заключается в том, что это одна из тех вещей, которые трудно достичь совершенства с первого раза, поэтому постарайтесь убедиться, что ваш дизайн позволяет изменить то, как вы делаете что-то. Например. иметь единственную функцию GetUserStats, которая возвращает объект UserStats, поэтому на вашем сайте есть только одно место, где реализована эта логика. Это должно облегчить внесение изменений в дальнейшем.
Вы правы, что не хотите, чтобы на одной странице было несколько запросов. Я не особо разбираюсь в данных, но думаю, что для начала была бы хорошая хранимая процедура, которая возвращает всю статистику для пользователя за один раз. Это позволит вносить изменения в способ вычисления / обновления статистики (запрос, пакет, триггеры и т. д.) Без внесения каких-либо изменений в ваш код.
У меня возникнет соблазн сохранить «текущий итог» статистики по мере того, как я иду и сохраняю в базе данных, это простой запрос для получения данных, когда это необходимо. В зависимости от того, насколько критично, чтобы отображаемые пользователю значения были актуальными, может потребоваться какое-то кеширование.
У нас есть ряд приложений, в которых статистика имеет решающее значение для пользователя. Внедрение системы, в которой статистика хранится в базе данных с использованием метода «промежуточный итог», привело к значительному повышению производительности. При этом количество одновременных пользователей у нас намного меньше, чем у вас.
вы используете триггеры для ведения таблицы статистики?
Сколько одновременных пользователей вы ожидаете?