SQL Server Performance

Monitorizar carga de servidor sql

Discussion in 'Preguntas sobre SQL Server en Español.' started by meshkalito, Jul 26, 2005.

  1. meshkalito New Member

    Hola a todos,<br /><br />esta es la primera vez que escribo en este foro así que no sean demasiado duros conmigo si meto la pata <img src='/community/emoticons/emotion-1.gif' alt=':)' /><br /><br />estoy realizando una aplicación que muestra estadisticas en tiempo real de una tabla, a traves de sentencias sql selecciona una serie de parametros con los cuales despues se construyen dichas estadisticas. La idea es hacer un proceso residente que vaya lanzando los comandos sql cada cierto intervalo de tiempo, sin que ello sobrecargue la BBDD ya que suele estar muy concurrida, y es mas importante el trabajo que se realiza sobre ella que las estadisticas que se puedan generar. Asi que la idea es preguntar al servidor SQL cual es la carga en el momento de lanzar las queries y si supone ralentizar las demas transacciones, retardar la consulta hasta que la BBDD este menos concurrida.<br /><br />la pregunta es: ¿ como puedo obtener estos datos de carga de transacciones, uso de memoria y disco y carga de la red, a través de código por ejemplo en una infraestructura .NET ?<br /><br />Gracias de antemano.<br />Salut!
  2. Luis Martin Moderator

    Desde el punto de vista del Monitor de Performance, la informaciòn es obtenida de la tabla sysperfinfo.

    Con el Analizador de Consultas, ejecuta select * from sysperinfo y podràs comprobar que contadores pueden interesarte.

    Saludos,


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important
    Bertrand Russell


    All postings are provided “AS IS” with no warranties for accuracy.



  3. meshkalito New Member

    Gracias, ya miré la tabla y eran los datos que andaba buscando, ahora mi pregunta es si esta tabla se actualiza en tiempo real, o como se puede controlar la actualización de la tabla.

    Salut.
    Oriol Torras.
  4. Luis Martin Moderator

    Es actualizada en tiempo real, es decir te muestra lo que en ese momento está ocurriendo.

    Saludos,


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important
    Bertrand Russell


    All postings are provided “AS IS” with no warranties for accuracy.



  5. c_maldon Member

    Otra variante es la de utilizar los parámetros avanzados del SQL Server Agent.

    Donde le podés indicar cuando se considera "idle CPU".

    Configurás el porcentaje de CPU maximo y el tiempo que debe permanecer por debajo del límite,

    Luego creas un Job que se calendariza con "Iniciar al quedar inactiva la o las CPU", dentro del job llamás a un procedimiento que calcula las estadísticas.

    Es importante que el procedure no bloquee, utilizando
    WITH (NOLOCK) en los selects.

    El proceso se ejecutará siempre que pases x segundos de inactividad.

    Saludos
  6. meshkalito New Member

    Hola c_maldon,

    tu sugerencia es muy buena, la estuve probando y funciona muy bien, el problema que tengo es que he de lanzar una consulta cada hora (por ejemplo) y rellenar una tabla en access con las estadisticas recogidas, teniendo en cuenta que cuando lanze el SP la cpu no este muy sobrecargada.

    A ver si se puede hacer esto: crear un job que lanze la SP cada hora y que compruebe si hay mucha carga en el servidor para retrasar su lanzamiento en caso de estar saturado. Mirando dentro de la tabla de performance de la Base de Datos lo veo factible, tal como dijo LuisMartin, ahora bien, ¿hay posibilidad de interactuar con el server agent desde ese mismo SP?

    Lo siento si la pregunta resulta estupida, pero estoy empezando con el SQLServer y aún me queda mucho camino por recorrer.

    Gracias por todo.



    Salut.
    Oriol Torras.
  7. Luis Martin Moderator

    Estás buscando ejecutar un job agendado dentro de la sp?.
    Si esto fuera así, necesitas capturar resultados generados por el job?


    Luis Martin
    Moderator
    SQL-Server-Performance.com

    One of the symptoms of an approaching nervous breakdown is the belief that one's work is terribly important
    Bertrand Russell


    All postings are provided “AS IS” with no warranties for accuracy.



  8. meshkalito New Member

    quote:Originally posted by LuisMartin

    Estás buscando ejecutar un job agendado dentro de la sp?.
    Si esto fuera así, necesitas capturar resultados generados por el job?

    Me parece que no, yo creo un job que se ejecute cada hora, este job ejecutaria una serie de SP ( que rellenan las tablas de estadisticas ), pero si y solo si, la carga del servidor no es muy elevada, para no saturar la base capturando estadisticas, ya que no es prioritario.

    La idea que me surgio a raiz del post de c_maldon, era si podria suspender el job que se ejecuta cada hora hasta que el job que se lanza por el uso del procesador de "permiso".

    O que las propias SP se bloquearan, consultando el sysperfmon hasta que sea factible lanzar las consultas para las estadisticas.

    Salut.
    Oriol Torras.

Share This Page