SQL Server consume el 87.5% de la RAM de mi servidor. Esto recientemente causó muchos cuellos de botella en el rendimiento, como la lentitud. Investigué este problema. Una solución común que podría encontrar en Internet es establecer el límite máximo para SQL Server. Esto se hizo y se obtiene mucha mejora. Quiero saber por qué si no se establece el valor máximo de memoria, por qué SQL Server sigue consumiendo los recursos
36
Respuestas:
SQL Server consumirá tanta memoria como lo permita . Por defecto, ese número abarcaría el 100% de su memoria numérica en su máquina. Es por eso que estás viendo lo que estás viendo. Si le da a SQL Server 24 GB de memoria, SQL Server hará todo lo posible para usar 24 GB de memoria. Luego tienes SQL Server y el SO luchando por los recursos, y siempre resultará en un bajo rendimiento.
Cuando establece el
max server memory
límite de configuración, está limitando cuánto SQL Server puede asignar para el grupo de búferes (prácticamente donde almacena las páginas de datos y el caché de procedimientos). Hay otros empleados de memoria dentro de SQL Server, por lo que para su versión particular (2008 R2 y posteriores),max server memory
solo controla el grupo de búferes. Pero este siempre será el mayor consumidor de memoria.Referencia de TechNet sobre los efectos de la memoria mínima y máxima del servidor
En cuanto a la cuestión de cuánta memoria debo dejar para el sistema operativo , esa es una métrica comúnmente debatida. Realmente todo depende, principalmente de qué otros procesos se ejecutan en el servidor . Siempre que sea un servidor verdaderamente dedicado (y ese casi nunca es el caso). Me gusta ver al menos 4 GB de memoria para el sistema operativo (y aún más en cajas de hardware grande). Pero lo más importante, controle cuánta memoria no utilizada hay. Sea liberal y brinde más memoria a SQL Server si nota que hay mucha memoria disponible (puede ser monitoreada a través de perfmon) y memoria no utilizada (por supuesto, siempre dejando un pequeño búfer para esas situaciones de esquina).
fuente
SQL Server está diseñado para usar toda la memoria en el servidor de forma predeterminada. La razón de esto es que SQL Server almacena en caché los datos en la base de datos en la RAM para que pueda acceder a los datos más rápido de lo que podría si necesitara leer los datos del disco cada vez que un usuario los necesitara. Si necesitáramos ir a los discos cada vez que SQL Server necesitara los mismos datos una y otra vez, los requisitos de E / S del disco serían increíblemente altos.
Normalmente, recomiendo que la gente deje alrededor de 4 Gigas de RAM para Windows, pero eso realmente depende de la cantidad de software que se ejecuta en el servidor, qué componentes de SQL Server está utilizando (no todos los componentes siguen esa configuración), etc.
fuente
Esto funciona instantáneamente sin la necesidad de reiniciar SQL:
Opciones de configuración del servidor de memoria del servidor
Use las dos opciones de memoria del servidor, memoria mínima del servidor y memoria máxima del servidor , para reconfigurar la cantidad de memoria (en megabytes) administrada por el Administrador de memoria de SQL Server para una instancia de SQL Server. De manera predeterminada, SQL Server puede cambiar sus requisitos de memoria dinámicamente en función de los recursos del sistema disponibles.
Procedimiento para configurar una cantidad fija de memoria Para configurar una cantidad fija de memoria:
Use la configuración predeterminada para permitir que SQL Server cambie sus requisitos de memoria dinámicamente en función de los recursos del sistema disponibles. La configuración predeterminada para la memoria mínima del servidor es 0, y la configuración predeterminada para la memoria máxima del servidor es 2147483647 megabytes (MB).
¡Espero que esto ayude!
fuente
Como dijo Eric, debe administrar la memoria para mantener espacio libre para otros procesos. Para obtener una explicación general y alguna guía sobre cómo configurar la memoria máxima, consulte la publicación de Jonathan Kehayias:
http://www.sqlskills.com/blogs/jonathan/how-much-memory-does-my-sql-server-actually-need/
Puede modificar la recomendación teniendo en cuenta el uso de su servidor.
fuente
SQL Server utilizará RAM disponible a menos que ponga un límite al uso. Como regla, trato de dejar no menos de 2 GB libres para el sistema operativo, es decir, si tiene 64 GB de RAM física en el host, limite SQL Server a 62 GB.
http://msdn.microsoft.com/en-us/library/ms191144(v=sql.105).aspx
fuente