Blog gratis
Reportar
Editar
¡Crea tu blog!
Compartir
¡Sorpréndeme!
img
img

 

 

SQL Server
Blog. (Apuntes y Recopilaciones) por Norman M. Pardell

img
img

When a SQL blocks the RAM memory how to force the recovery of that. Forzar reducir consumo de memoria usada por SQL Server

 Procedo a explicarte las posibilidades para reducir el consumo de SQL.

 

 En SQL Server se pueden diferenciar dos grandes secciones de memoria.

-          Memoria para paginas (Datos)

-          Memoria del proceso de SQL

 

 Sobre la memoria de proceso de SQL no tenemos control ninguno y SQL va a consumir la que crea necesaria (Normalmente en torno a 200M-300M) dependerá de servidores enlazados, proveedores de acceso, etcétera

 

 Sobre la memoria de páginas tenemos más flexibilidad, podemos controlar su tamaño máximo “max server memory” tamaño minimo “min server memory” e incluso podemos habilitar una opción “lock pages in memory” que hace que las páginas de datos no puedan ser eliminadas por otros procesos del sistema

 

 En este artículo tenemos información sobre “max server memory” y “min server memory”

http://msdn.microsoft.com/en-us/library/ms178067.aspx

 

 Para configurar “max server memory” ejecutaremos:

sp_configure 'show advanced options', 1;

GO

RECONFIGURE;

GO

sp_configure 'max server memory', 3071;

GO

RECONFIGURE;

GO

 

 Cambiamos el valor 3071 (valor en megas)  por el que nos sea más conveniente.

Inicialmente al cambiar este valor el servidor debería ir liberando la memoria según le es posible hasta llegar hasta el valor establecido, esto puede llegar a tardar bastante, días incluso, según mi experiencia. Si se necesita liberar memoria de forma inmediata lo más rápido es cambiar este valor y reiniciar el servicio de SQL.

 

 Otros conceptos de la memoria de páginas:

Hay una diferencia fundamental entre las versiones de 32 bits y 64 bits de SQL Server.

 

 En 32bits Windows divide el espacio de memoria(4GB) en dos bloques de 2GB, 2GB para el Kernel y 2GB para el proceso, por tanto sin ninguna opción avanzada más SQL Solo va a consumir 2GB de máximo (paginas + proceso)

 

 En 64bits Windows divide rl espacio de memoria(16TB) en dos bloques de 8TB, 8TB para el Kernel y 8TB para el proceso por tanto en 64bits SQL va a consumir toda la memoria con la que esté configurado en “max server memory” + memoria para el proceso de SQL.

 

 32 bits y más de 2GB para la memoria de páginas.

En las ediciones de 32bits existe la opción de usar más de 2GB, esta memoria extra solo se puede usar para páginas de memoria, el uso de esta memoria está apoyado en una API de Windows llamada AWE. Si AWE está activo SQL 32bits será capaz de usar tanta RAM para páginas como la especificada en “max server memory”

Más información sobre AWE: http://msdn.microsoft.com/es-es/library/ms190673(v=SQL.105).aspx

 

 64bits y lock pages in memory.

En ediciones de 64 bits existe la posibilidad de habilitar “lock pages in memory” lo que provocara que el sistema operativo no pueda reclamar RAM a sql server en caso de necesitarlo, se recomienda ser prudente con esta opción, mientras que en Windows 2003 puede ser beneficioso esta opción en Windows 2008 no se considera tan necesario, de todas formas la activación de esta opción dependerá del entorno y uso de la base de datos.

Más información: http://msdn.microsoft.com/es-es/library/ms190730.aspx

 

 Tanto AWE como “lock pages in memory” hacen que el sistema operativo no pueda reclamar esa memoria para otros procesos.

 

 Al problema: Reducir la memoria consumida por SQL Server sin parada del servicio.

Como he comentado esto se consigue con la variable “max server memory”

 

 En caso de no tener AWE/lock pages in memory activo.

-          En este caso una vez configurada la variable “max server memory” con los pasos especificados SQL debería liberar la memoria ya sea cuando no la necesita o si Windows le obliga a liberarla para ser usada por otro proceso. Hay que tener en cuenta que si Windows le reclama mucha memoria de golpe a SQL Server veremos una bajada de rendimiento en SQL Server mientras salva los datos de las páginas al ser liberadas.

 

-          En caso de tener AWE/lock pages in memory en principio no debería haber mayor diferencia que con AWE/lock pages in memory activado SQL va a ir liberándola progresivamente, pero al estar las paginas bloqueadas en memoria Windows no puede reclamarle memoria a SQL Server por tanto es factible que algunos programas que necesiten gran cantidad de RAM no funcionen correctamente.

 

 Conclusión después de este rollo: En cualquier situación si se quiere no reiniciar la instancia se puede reconfigurar “max server memory” y a lo largo de 1-2 días ver el progreso de la memoria de SQL Server. Si se necesita liberar la memoria de forma inmediata hay que reiniciar la instancia.

 

 

Fuentes:

Microsoft, MSDN

Apunte y recopilación por Norman M. Pardell

Puedes consultarme, si deseas cualquier aclaración, pregunta o sugerencia en: Contacto, contestaré tan pronto como me sea posible.

publicado por normanmpardell a las 12:04 · Sin comentarios  ·  Recomendar
Comentarios (0) ·  Enviar comentario
Esta entrada no admite comentarios.
img
.Sobre mí
FOTO

Norman M. Pardell

MCITP: Database Administrator & Database Developer, SQL Server 2008. MCC Award Certificate. Consultor Senior de bases de datos en Capgemini España, S.L. Asesoramiento en implementación, desarrollo y gestión de bases de datos en grandes compañías. Actualmente, asignado a proyecto en compañía líder en el sector energético global. Más de 10 años trabajando con SQL Server (y otros gestores de BBDD)

» Ver perfil

img
.Secciones
» Inicio
img
.Enlaces
» Microsoft MSDN Foros
» Windows Server 2012
img
.Más leídos
» Asignar la cantidad correcta de Memoria para SQL Server
» Base de Datos Sospechosa (Suspect)
» Como modificar la Intercalación (Collation) en SQL Server
» Como renombrar una instancia de SQL Server. sp_dropserver. sp_addserver
» Detectar bloqueos. SQL Server V.2005 y superiores
» Funciones SQL Server. Funciones escalares y funciones con valores de tabla.
» Integridad y corrupción en las bases de datos: DBCC CHECKDB
» Log de transacciones ( .ldf ). SQL Server.
» Migrando SQL Server 2005, 2008, 2008 R2 a SQL Server 2012
» Transacciones activas. SQL server 2008
img
.Nube de tags [?]
                                                           
img img
FULLServices Network | Crear blog | Privacidad