Viewstate в плоских файлах против viewstate в SQLServer
-
20-09-2019 - |
Вопрос
Я написал свой собственный PageStatePersister
класс, основанный на SessionPageStatePersister
который записывает самые последние 10 Viewstate
s для сеанса на общем диске.Я полагаю, что это будет масштабироваться лучше, чем сохранение Viewstate
в сеансе, поскольку все веб-серверы имеют к нему доступ, им не придется иметь дело с истечением срока действия и использовать меньше памяти.
Когда пользователь закрывает браузер, он уведомляет сервер, и сервер удаляет те файлы, к которым не было доступа в течение двух часов.Пока все хорошо, но мне интересно, будет ли это быстрее и эффективнее хранить Viewstate
вместо этого в базе данных SQL server.
- Каждый
ViewState
размер файла в среднем составляет 30 кб. - В настоящее время он просто считывает скрытое поле, чтобы получить ключ Viewstate и получить прямой доступ к файлу и десериализовать.Нет необходимости сортировать или искать.
- Каждый час будет одновременно работать около 2000 пользователей, а сохранение последних 20 сеансов Viewstate составит около 20 тысяч файлов временного просмотра в час.
- Он должен периодически перебирать файлы и удалять самый старый файл.
Итак, что лучше в данном случае:a плоский файл система или База данных?
Решение
Было бы намного лучше масштабировать сохранение ViewState в SQL Server.Например, если вы в конечном итоге захотите увеличить загрузку базы данных с 10 самых последних до 50 самых последних, это будет относительно тривиальное увеличение загрузки базы данных.Дискового ввода-вывода, как правило, следует избегать, когда это возможно, в большей степени, чем ввода-вывода с базы данных.Операции очистки также будут работать намного лучше, поскольку поиск по пустоши заброшенных файлов на диске, вероятно, намного тяжелее, чем WHERE DateInserted > 20 minutes ago
.