SQL Server Performance

Configuración de memoria para SQL Server 2000 32 bits

Discussion in 'Preguntas sobre SQL Server en Español.' started by EmeT, Sep 3, 2007.

  1. EmeT New Member

    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.
  2. Luis Martin Moderator

    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?
  3. EmeT New Member

    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.¿?
  4. Luis Martin Moderator

    Fijate si este artículo y fix te ayudan.
    http://support.microsoft.com/kb/899761
    http://support.microsoft.com/kb/274750/
  5. EmeT New Member

    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.
  6. Luis Martin Moderator

    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,

Share This Page