una tablas recomendaciones queries porque para optimizador lenta las grandes dañan datos cuello consulta consejos como cantidades botella agilizar c# .net asp.net

c# - recomendaciones - porque se dañan las tablas en mysql



¿Por qué es una mala idea usar Session para almacenar el estado en sitios web de alto tráfico? (7)

Almacenar datos en una base de datos, en cookies o en algún otro método que no esté directamente ocupando la memoria del servidor web.

Además de la carga, la sesión también plantea problemas con la capacidad de usar granjas de servidores, ya que tendría que sincronizar la sesión en toda la granja de servidores o hacer que las sesiones sean confusas, lo que puede afectar la escalabilidad.

Estoy viendo la ASP.NET aprender videos en asp.net/learn. En este tutorial, están construyendo un motor de prueba. En un momento dado, el narrador explica que vamos a utilizar el objeto Session para mantener el estado entre cada página (cada página contiene una pregunta y cuatro respuestas). Dice que "ya que este es un sitio web de poco tráfico" está bien usar Session y que no tiene tiempo para implementar un método más sofisticado.

Me pregunto qué método (s) alternativo está insinuando. ¿Y por qué la sesión es una mala elección para un sitio web de alto tráfico?


La sesión como método de almacenamiento de estado es difícil en sistemas de alto tráfico por varias razones.

Primero, el método de almacenamiento de sesión predeterminado está en proceso, lo que significa que si tiene una granja de servidores web con equilibrio de carga, ''perderá'' constantemente la información de la sesión a medida que un usuario recibe páginas de servidores diferentes.

El servidor de sesión en proceso también muere cuando se recicla un grupo de aplicaciones, lo que sucede con más frecuencia en servidores de mayor tráfico.

Las opciones de escalabilidad para los datos de sesión son

  1. Utilice el servidor de sesión ASP.NET disponible gratuitamente y apunte todas sus aplicaciones hacia él.
  2. Utilice SQL Server para almacenar datos de sesión.

Debido a la naturaleza de los datos de la Sesión en general, ninguno de estos es una muy buena opción para un sitio con mucho tráfico (a menos que tenga dinero ilimitado para utilizar el hardware).


Los datos de la sesión se almacenan en la memoria RAM del servidor, si tiene un sitio de alto tráfico que se llenará rápidamente y lo último que desea es que los datos se intercambien en el disco.

Como dice gaijin42, las cookies o un DB son la alternativa.


No voy a repetir lo que ya se mencionó aquí, pero otra alternativa es usar el hash de la aplicación. Debe usarse con moderación, ya que consumirá memoria en su servidor web como Adam ya lo ha mencionado, pero proporciona una buena manera de almacenar en caché las cosas que son comunes en TODOS sus usuarios.

Esto le evita tener que volver a su base de datos para recuperar la información que probablemente ya haya sido solicitada por otra persona.

Otra alternativa similar a Application es Cache, que tiene más flexibilidad en términos de cuándo se publica, la duración, etc.

Aquí hay algunos enlaces en caso de que esté interesado: ASP NET Caching Application State


Para alternativas, puede leer el artículo Nueve opciones para administrar el estado de usuario persistente en su aplicación ASP.NET .

En los artículos el autor explica los pros y los contras de cada método.

Del resumen:

ASP.NET proporciona muchas formas diferentes de conservar los datos entre las solicitudes de los usuarios. Puede usar el objeto Aplicación, las cookies, los campos ocultos, los objetos Sesión o Caché y muchos otros métodos. Decidir cuándo usar cada uno de estos a veces puede ser difícil. Este artículo presentará las técnicas mencionadas y presentará algunas pautas sobre cuándo usarlas. Aunque muchas de estas técnicas existían en el ASP clásico, las mejores prácticas para cuándo usarlas han cambiado con la introducción de .NET Framework. Para conservar los datos en ASP.NET, deberá ajustar lo que aprendió anteriormente sobre el manejo del estado en ASP.


Para los sitios web de alto tráfico puede estar buscando en Memcached. Es un mecanismo de almacenamiento en caché que se almacena en la memoria RAM de una computadora remota. Recientemente, se ha creado un puerto win32 de la biblioteca (antes solo era posible con Linux).


Usamos una base de datos para cualquier tráfico alto o que resultará en un estado de sesión grande. En su lugar, almacenamos un puntero en el estado de sesión real que apunta a nuestro registro de base de datos. Entonces, la única sobrecarga que tenemos es el ancho de banda entre el servidor web y el servidor de base de datos, que será mucho menor que entre un usuario determinado y el servidor web.