Сколько данных сессии приложения вы можете хранить? - PullRequest
6 голосов
/ 30 сентября 2008

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

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

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

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

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 30 сентября 2008

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

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

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

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

0 голосов
/ 30 сентября 2008

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

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

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

0 голосов
/ 30 сентября 2008

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

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

0 голосов
/ 30 сентября 2008

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

...