Viewstate en archivos planos vs estado de vista en SQLserver
-
20-09-2019 - |
Pregunta
escribí mi propia clase PageStatePersister
basado en SessionPageStatePersister
que escribe los más recientes 10 Viewstate
s para una sesión de un disco compartido. Calculo este escalará mejor que mantener Viewstate
en la sesión ya que todos los servidores web tienen acceso a ella, no van a tener que lidiar con la espiración, y usar menos memoria.
Cuando un usuario cierra el navegador se notifica al servidor y el servidor elimina los archivos que no se ha accedido durante dos horas. Hasta aquí todo bien, pero me pregunto si va a ser más rápido y más eficiente para almacenar Viewstate
en una base de datos del servidor SQL en lugar.
- Cada archivo
ViewState
es 30k en promedio. - En la actualidad sólo se lee un campo oculto para conseguir una llave Viewstate y acceder al archivo directamente y deserializar. No hay necesidad de ordenar o de búsqueda.
- habrá cerca de 2.000 usuarios simultáneos cada hora y guardar últimos los últimos 20 sesiones de estado de vista será de unos 20k vista temp archivos por hora.
- Se debe repetir periódicamente a través de archivos y borrar el archivo más antiguo.
Entonces, ¿cuál es mejor en este caso: un flatfile del sistema o un base de datos
Solución
Sería mucho mejor escala para almacenar el ViewState en SQL Server. Si finalmente desea aumentar de 10 a 50 más reciente más reciente, por ejemplo, sería un aumento en la carga relativamente trivial DB. Disco I / O generalmente se debe evitar siempre que sea posible, moreso que DB I / O. operaciones de limpieza también funcionaría mucho mejor, ya que buscan a través de un terreno baldío de archivos abandonados en el disco es probablemente mucho más pesado que WHERE DateInserted > 20 minutes ago
.