Hola. A ver si alguien puede echarme una mano a aclarar las ideas que tengo sobre la gestión de la memoria RAM en Windows y SQL Server. Mi problema es el siguiente: Tengo un servidor de 4 vÃas destinado a SQL Server, con 12 GB de RAM y Windows 2003 Server Standar x64 instalado. En ese ordenador corre una sóla instancia de SQL Server 2000 Enterprise de 32 bits SP4 HF 2187. El caso es que, después de mucho buscar, no he encontrado ningún sitio en el que se especifique la configuración del sistema necesaria para que SQL Server utilice toda la memoria disponible, y todo lo que he leÃdo me ha generado muchas dudas. Por una parte, entiendo que no es necesario incluir ningún parámetro de arranque en el S.O., por se este de 64 bits y no necesitar de PAE para gestionar los 12 GB de memoria, es más, creo haber leÃdo que aunque lo hiciera, el S.O. no harÃa caso de dichos parámetros, por ser éstos sólo necesarios para SO´s de 32 bits. Por otro lado, la configuración de "awe enabled" de SQL Server está pensada para usar la API awe, utilizado en los SO´s de 32 bits para manejar la memoria más allá de 4 GB, pero no sé si es válida para utilizar la memoria más allá de 4 GB de un SO x64. El caso es que no consigo que SQL Server utilice más de 4GB de memoria (lo "máximo" a lo que puede llegar un proceso de 32 bits corriendo sobre un x64), y eso con la configuración "awe enabled" deshabilitada. Si hablito "awe enabled" en el servidor, el administrador de tareas de Windows indica un uso de memoria inferior a 200 MB. También he leÃdo que esta forma de mirar la memoria no es la correcta, pero es que tampoco encuentro los monitores de rendimiento de SQL para poder mirarla de otra forma. No sé si todo esto tiene solución, pero sà que he leÃdo en esta misma Web un post en el que se indicaba como la mejor configuración posible la que yo tengo (Server 2003 x64 con SQL Server 2000 32 bits), siempre y cuando no se pueda instalar SQL Server 2005 x64 (es mi caso, por no estar certificada por mi ERP). Espero haberme explicado con claridad, y gracias de antemano por cualquier aclaración a este mar de dudas.
Quisiera saber lo siguiente: Sin cambiar nada, ejecuta el Monitor de Rendimiento (Performance Monitor) y fÃjate en los siguientes contadores: 1) SQL Administración de Memoria---> SQL Server Memory. 2) SQL Administración de Memoria---> SQL Server Target Memory. Por otro lado, cómo tienes configurada la memoria en el SQL Server ? Con algún máximo definido o dinámica?
Hola. Ya he podido ejecutar el monitor de rendimiento, y ambos contadores indican el valor 3718640 (Lo mismo que marca el administrador de tareas para el proceso de sql). Por otra parte, la memoria está configurada con una valor fijo de 10GB, y la cuenta que inicia el servicio tiene privilegios para "bloquear paginas en memoria", aunque creo que ésto sólo tiene utilidad si SQL Server intenta utilizar AWE.¿?
Fijate si este artÃculo y fix te ayudan. http://support.microsoft.com/kb/899761 http://support.microsoft.com/kb/274750/
Hola, Luis. He aplicado el Fix del problema de la mitad de memoria, porque antes ó después tendrÃa que hacerlo, y he activado "awe" en el servidor de SQL. El resultado es que, aparentemente, el servidor ya usa los 10 Gb de memoria (este es el valor que marcan los dos contadores de rendimiento, y en la pestaña de "Rendimento" del administrador de tareas, también aparecen como consumidos 10 GB de memoria. Lo curioso es que el mismo administrador de tareas, le computa al SQLServer sólo 140 Mb de memoria. He leÃdo por algún sitio que esto puede ser normal, ya que el administrador de tareas no contempla el uso de memoria "extendida". Asà que parece que ya he conseguido lo que estaba buscando. P.D.: Por alguna prueba de rendimiento muy simple que he realizado (un select * de 1.000.000 de registros de una base de datos de 500 MB), me da la impresión de que SQLServer se mueve mejor con 4GB de memoria direccionable directamente, que con 10 GB de memoria "paginada". ¿Me equivoco?. Gracias por la ayuda. Un saludo.
Me alegro que el fix te haya ayudado as resolver el problema. Con respecto al administrador de tareas es un producto que se mantiene por compatibilidad con NT4, por lo tanto no tengas en cuenta para ninguna información relacionada con SQL. La prueba que tu realizaste con el Select, puede ser enagañosa. Lo habitual es dejar la memoria del SQL en forma dinámica y, con 10GB, no tendrÃa porque paginar. Y, si lo hace, casi seguro se debe a alguna copia de algún archivo desde el servidor a otro PC, por ejemplo copiar un backup a otro lado, entonce pagina. Esto lo puede controlar con el Monitor de Performance --> Memory --> Pages/sec. Este valor no deberÃa pasar de 20, excepto por cortos perÃodos, o por la copia que te mencioné anteriormente. También podrÃa ocurrir si la base necesita optimizaciones. Saludos,