Average Page Life Expectancy

  • Comments posted to this topic are about the item Average Page Life Expectancy


  • ...or you could use perfmon to get the same.

  • Please don't laugh at me, but in my current environment our Network Admin does not allow the DBA's to view Perfmon on our servers. I know in most cases this is not the norm, so this script is redundant for those who have access to Perfmon. Although, for those poor souls who do not have access to Perfmon, then this script will fill the gap.

    Thanks for the reply.


  • Keith Browning (12/1/2010)

    ...or you could use perfmon to get the same.

    True, but there's some overhead with constantly running a perfmon. Just scraping the already collected data from the DMV's is less overhead. We do something similar to this with the Memory Grants Pending metric. That's usually an indicator of memory saturation (ie we're dead in the water), but by itself is not that useful because it's not a predictive metric. It only tells me my server is dead, it doesn't tell me anything prior to the server becoming saturated.

    Page Life Expectancy is a decent predictive metric. It's not the end-all-be-all metric for memory consumption, but at least it'll start an investigation which is usually all we need.

  • The script did not work on my PC. I found the object_name is 'MSSQL$INST01:Buffer Manager' instead in my PC.

  • The code does not take the instance name into account.

    Here is a solution that does.




    This script provides a sampling of PLE based on (1) minute intervals from

    sys.dm_os_performance_counters. Originally written on November 11, 2010

    by Tim Parker.



    DECLARE @counter INT --This will be used to iterate the sampling loop for the PLE measure.

    SET @counter = 0


    DROP TABLE #pleSample


    begin CATCH


    CREATE TABLE #pleSample


    CaptureTime DATETIME,

    PageLifeExpectancy BIGINT


    WHILE @counter < 30 --Sampling will run approximately 1 minute.


    --Captures Page Life Expectancy from sys.dm_os_performance_counters

    INSERT INTO #pleSample







    FROM sys.dm_os_performance_counters

    WHERE [object_name] LIKE N'%:Buffer Manager%'

    AND counter_name = N'Page life expectancy'

    SET @counter = @counter + 1

    RAISERROR('loop number %i ', 10, 1, @counter) WITH NOWAIT

    WAITFOR DELAY '000:00:02'


    --This query will return the average PLE based on a 1 minute sample.

    SELECT RIGHT(CONVERT(VARCHAR(24), DATEADD(SECOND, AVG(PageLifeExpectancy), 0), 113),12) AS 'Average Page Life Expectancy'

    FROM #pleSample

    DROP TABLE #pleSample

  • Tell the adimins that they are aholes as you need to be able to view the perfomance in order to discern the effectiviness of your schema/queries/indexes

    if they will not budge go to the upper guys and advise them you need the idera suite for monitoring this will cost quite a bit... If they give it to you you are golden if not then advise you will not be responsible for tuning as the power hungry sys admins are doing their bs power grab again. I was ready for this type of situation and when my network admin replied so what do you want admin rights on the whole system then respond YES I did and having such rights have saved me on several occasions. If that does not work when stuff goes down say you have no access to be able to fix as you are not allowed to view the perfomance as all dbas are.. Then flat out blame the network admin it worked for me

  • Thanks for the script.

  • I'm not too worried about the AVERAGE PLE

    Right now it's 15165

    What worries me is when it dips to 60

Viewing 9 posts - 1 through 8 (of 8 total)

You must be logged in to reply to this topic. Login to reply