none
Differenza risultati: DBCC SQLPERF(logspace) e query su master_files RRS feed

  • Domanda

  • Ciao a tutti,

    avrei bisogno di un chiarimento sull'output di due comandi (come riportato in oggetto).

    Vi descrivo lo scenario:

    lancio il comando DBCC SQLPERF(logspace) e ottengo alcuni valori per i seguenti campi: Nome DB - Log size - Log space used (%) - Status

    lancio la query SELECT name, (size*8.0)/1024.0 as sizeMB, max_size, ((size*100.0)/max_size) as percent FROM master.sys.master_files e ottengo altri valori in particolare per quanto riguarda la percentuale di occupazione (colonna "percent")

    Vorrei dunque capire a cosa fa riferimento il valore del campo Log space used (%) ottenuto con il 1° comando. Io nella query faccio una semplice proporzione per capire il livello di occupazione rispetto alla dimensione massima del log

    Qualcuno riesci ad aiutarmi!?

    Grazie 1000!!!

    mercoledì 23 novembre 2011 10:59

Risposte

  • Il campo max_size della tabella sys.master_files indica le dimensioni massime del file espresse in pagine di 8K.

    I valori che può assumere, però, dipendono da come hai settato la dimensione nelle proprietà del database.

    Se non specificatamente indicato, solitamente avrai -1, che significa che il file può crescere fino a riempire il disco. Se invece trovi il valore 268435456 il file può crescere fino ad un massimo di 2TB.

    Ecco perchè probabilmente non ti tornano i conti con la percentuale...

    Puoi usare questa query:

    SELECT
        db.[name] AS [Database Name],
        db.recovery_model_desc AS [Recovery Model],
        db.log_reuse_wait_desc AS [Log Reuse Wait Description],
        ls.cntr_value AS [Log Size (KB)],
        lu.cntr_value AS [Log Used (KB)],
        CAST(CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)AS DECIMAL(18,2)) * 100 AS [Log Used %],
        db.[compatibility_level] AS [DB Compatibility Level],
        db.page_verify_option_desc AS [Page Verify Option],
        db.is_auto_create_stats_on,
        db.is_auto_update_stats_on,
        db.is_auto_update_stats_async_on,
        db.is_parameterization_forced,
        db.snapshot_isolation_state_desc,
        db.is_read_committed_snapshot_on
    FROM
        sys.databases AS db WITH (NOLOCK)
    INNER JOIN
        sys.dm_os_performance_counters AS lu WITH (NOLOCK)
            ON db.name = lu.instance_name
    INNER JOIN
        sys.dm_os_performance_counters AS ls WITH (NOLOCK)
            ON db.name = ls.instance_name
    WHERE
        lu.counter_name LIKE N'Log File(s) Used Size (KB)%'
    AND
        ls.counter_name LIKE N'Log File(s) Size (KB)%'
    AND
        ls.cntr_value > 0 OPTION (RECOMPILE);
    

    per monitorare lo stato dei files di log.

    Fa parte di questi scripts creati da Glen Berry.

    HTH

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Proposto come risposta Irina Turcu lunedì 28 novembre 2011 16:27
    • Contrassegnato come risposta Irina Turcu giovedì 8 dicembre 2011 12:30
    giovedì 24 novembre 2011 08:11

Tutte le risposte

  • Nessuno è in grado di aiutarmi?!
    giovedì 24 novembre 2011 07:57
  • Il campo max_size della tabella sys.master_files indica le dimensioni massime del file espresse in pagine di 8K.

    I valori che può assumere, però, dipendono da come hai settato la dimensione nelle proprietà del database.

    Se non specificatamente indicato, solitamente avrai -1, che significa che il file può crescere fino a riempire il disco. Se invece trovi il valore 268435456 il file può crescere fino ad un massimo di 2TB.

    Ecco perchè probabilmente non ti tornano i conti con la percentuale...

    Puoi usare questa query:

    SELECT
        db.[name] AS [Database Name],
        db.recovery_model_desc AS [Recovery Model],
        db.log_reuse_wait_desc AS [Log Reuse Wait Description],
        ls.cntr_value AS [Log Size (KB)],
        lu.cntr_value AS [Log Used (KB)],
        CAST(CAST(lu.cntr_value AS FLOAT) / CAST(ls.cntr_value AS FLOAT)AS DECIMAL(18,2)) * 100 AS [Log Used %],
        db.[compatibility_level] AS [DB Compatibility Level],
        db.page_verify_option_desc AS [Page Verify Option],
        db.is_auto_create_stats_on,
        db.is_auto_update_stats_on,
        db.is_auto_update_stats_async_on,
        db.is_parameterization_forced,
        db.snapshot_isolation_state_desc,
        db.is_read_committed_snapshot_on
    FROM
        sys.databases AS db WITH (NOLOCK)
    INNER JOIN
        sys.dm_os_performance_counters AS lu WITH (NOLOCK)
            ON db.name = lu.instance_name
    INNER JOIN
        sys.dm_os_performance_counters AS ls WITH (NOLOCK)
            ON db.name = ls.instance_name
    WHERE
        lu.counter_name LIKE N'Log File(s) Used Size (KB)%'
    AND
        ls.counter_name LIKE N'Log File(s) Size (KB)%'
    AND
        ls.cntr_value > 0 OPTION (RECOMPILE);
    

    per monitorare lo stato dei files di log.

    Fa parte di questi scripts creati da Glen Berry.

    HTH

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    • Proposto come risposta Irina Turcu lunedì 28 novembre 2011 16:27
    • Contrassegnato come risposta Irina Turcu giovedì 8 dicembre 2011 12:30
    giovedì 24 novembre 2011 08:11
  • Sei un grande!

    Un'altra cosa, ma secondo te posso usare quella query per fare un controllo dei file di log? Ti spiego: io controllerei prima la % che mi viene restituita da DBCC SQLPERF(LOGSPACE), se raggiunge ad esempio un valore superiore al 90% controllo anche la % che mi viene restiuita dalla query sulla master_files.

     

    In questo modo sono tranquillo, nel senso che se la dbcc restiuisce un valore alto, ma il file può crescere mi sta bene.

    Se invece dal comando dbcc ho una % alta e anche la % tra size e max_size della master_files è alta allora mi devo preoccupare...

    Che ne pensi?!

    giovedì 24 novembre 2011 10:50
  • Secondo me la query che ti ho indicato è più che sufficiente per monitorare lo spazio del log.

    Anche perchè, ripeto, la max_size può non essere sempre popolata per tutti i db.

    Impostare la dimensione massima del file oppure lasciarlo libero fino a terminare lo spazio su disco è una questione filosofica :-)
    Personalmente preferisco lasciare libero di crescere il file di log, monitorandolo e magari facendomi mandare degli alert al raggiungimento di soglie specifiche (50%, 75%, 90% ad esempio).

    Ci sono anche prodotti Open Source come Nagios che ti permettono di monitorare vari parametri di funzionamento di SQL Server (c'è anche un post dei giorni scorsi proprio su questo).

     

     


    Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS" with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community members reading the thread.
    giovedì 24 novembre 2011 13:53