Сколько данных сеанса приложения вы можете хранить?

В настоящее время у меня есть приложение, которое ежедневно посещают более 20 000 пользователей, и они в основном просматривают одну таблицу данных. Эта таблица данных заполнена примерно 20 строками, но извлечена из «таблицы данных» в базе данных с 200 000–600 000 записей информации в таблице. Редактировать. Эти 20 строк являются «динамическими» и изменяются, если пользователь вводит какую-либо информацию через текстовое поле.

В настоящее время я также храню пользовательские данные вместе с данными профиля.

В настоящее время я делаю около 4 обратных вызовов каждый раз, когда отображается таблица данных, и я не могу сократить ее до 1 звонка.

Вопрос. Мне интересно, смогу ли я каждые 5 секунд заполнять состояние приложения 200 000–600 000 строками данных, и ускорит ли это работу системы? Редактировать: для динамических строк, которые вводит пользователь или любой другой пользователь, необходимо часто обновлять содержимое.

Вопрос 2. Сколько я могу удерживать в кеше приложения и при этом работать быстрее?

Изменить: Поскольку доступ к этим 200 000 строк имеют более 20 000 пользователей, мне нужно будет кэшировать их все или, по крайней мере, я думаю, что это будет лучшим методом. Когда пользователь заходит на мой сайт, это одна из главных страниц, которую он просматривает и, вероятно, возвращается 2-5 раз за посещение.

Изменить. Пользователь видит уникальный набор из 20 строк, которые могут отличаться от любых других 20 строк, которые видят пользователи. Это ОЧЕНЬ динамичный сайт, на котором несколько разных строк могут обновляться примерно раз в секунду.

Редактировать. При сохранении в состоянии сеанса это только ускорит количество просмотров страницы человеком. Не все приложение, потому что человек может просмотреть страницу только один раз, а затем уйти.


person SpoiledTechie.com    schedule 29.09.2008    source источник
comment
Пожалуйста, уточните свое первое редактирование. Вы правы во втором редактировании, но я все еще не понимаю первое. Из 200 тысяч строк во вселенной 20 строк разные для каждого посетителя или одинаковые?   -  person Walden Leverich    schedule 30.09.2008


Ответы (4)


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

  1. У вас есть аппаратное обеспечение для его поддержки? Если у вас нет памяти для такой конфигурации и вам нужно поменять местами страницы, то вы, вероятно, потеряете большую часть преимущества скорости от кэширования в памяти. Если вы используете внепроцессный сервер состояний, то у системы возникают накладные расходы на сериализацию.

  2. Как вы планируете искать что-то в таком количестве строк? Сервер базы данных выполняет множество операций поиска и сортировки для вас за кулисами. Они используют довольно сложные алгоритмы, которые вы потеряете, если кэшируете данные на веб-сервере.

Не существует действительно жесткого быстрого правила относительно того, когда что-то работает быстрее в базе данных, чем в памяти. Это действительно зависит от того, как настроено приложение и как хранятся данные.

person kemiller2002    schedule 30.09.2008

Вы говорите, что они в основном смотрят на одну таблицу, а эта таблица содержит от 200 до 600 тысяч строк. Как часто этот стол тянут? Является ли это сценарием типа «домашняя страница», когда пользователи в основном просматривают первую страницу данных? Зачем кэшировать все 200 тыс. строк, почему не кэшировать первые 20?

person Walden Leverich    schedule 29.09.2008

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

Я думаю, что предел памяти контролируется IIS. Существуют ограничения на Максимальный объем виртуальной памяти и Максимальный объем используемой памяти. Не забудьте проверить доступность данных.

Проверьте это: Настройка приложений ASP.NET в режиме изоляции рабочих процессов (IIS 6.0)

person artur02    schedule 29.09.2008

Не могли бы вы уточнить для меня - вы говорите, что пользователь получает таблицу данных из 20 записей, которая уникальна для этого пользователя и является результатом запроса таблицы 600 КБ? Статичны ли записи для пользователя?

Если есть только 20 записей, которые остаются статическими после того, как они связаны с пользователем, можете ли вы создать сериализованные объекты, которые могут передаваться пользователю по запросу? То есть поместите их в состояние, в котором они готовы к работе, чтобы вам не приходилось нажимать на БД.

person David Robbins    schedule 29.09.2008
comment
обновляется и редактируется. пожалуйста, смотрите изменения. 20 рядов не остаются статичными и могут/меняются каждые пару минут/часов. - person SpoiledTechie.com; 30.09.2008