Hi Tim,

On 27/08/13 15:29, Tim Ward wrote:
> The first time I run a certain SELECT query after not running it for a
> while (hours or days) I might get stats like:
>
> Current memory = 3265728
> Delta memory = 290716
> Max memory = 3267368
> Elapsed time= 166.92 sec
> Buffers = 150
> Reads = 92650
> Writes 65659
> Fetches = 16182424
>
> If I immediately run the same query again I get something like
>
> Current memory = 3186284
> Delta memory = -79444
> Max memory = 3326372
> Elapsed time= 1.98 sec
> Buffers = 150
> Reads = 14491
> Writes 80
> Fetches = 1176021
>
> (note 2 seconds instead of 167 seconds) . Subsequent runs then take
> consistently 2 seconds.
>


YOU will possibly be seeing garbage collection there, especially if this 
is the first time that the table has been scanned since previous 
changes/deletions were committed.

Also, note the number of reads - in the slow query, you have 92,650 
while the speedy query has only 14,491 so you have a lot of pages to 
read into cache prior to getting the results out.

You can see what effect a sweep is having on your query performance by 
leaving a day or so's worth of transactions to happen, and then manually 
running a sweep. When the sweep completes, try your query again.

You also have a large difference in fetches too. I'm away from my notes, 
but as far as I remember, a read is a physical read from disc while a 
fetch is a cached read from the cache.

I'd say that your slow response is down to cache filling, physical reads 
and possibly, a bit of garbage collection too.

HTH

Cheers,
Norm.

PS. If I got any of the above wrong, I shall be corrected! ;-)

-- 
Norman Dunbar
Dunbar IT Consultants Ltd

Registered address:
27a Lidget Hill
Pudsey
West Yorkshire
United Kingdom
LS28 7LG

Company Number: 05132767

Reply via email to