I have a large table (~ 2B rows) that contains an indexed timestamp column.  I 
am attempting to run a query to determine the number of rows for a given day 
using something like "select count(*) from tbl1 where ts between '2008-05-12 
00:00:00.000' and '2008-05-12 23:59:59.999'".  Explain tells me that the query 
will be done using an index scan (as I would expect), and I realize that it is 
going to take a while.  My question concerns some unusual I/O activity on the 
box (SUSE)  when I run the query.

For the first couple of minutes I see reads only.  After that vmstat shows 
mixed reads and writes in a ratio of about 1 block read to 5 blocks written.  
We have determined that files in our data and log partitions are being hit, but 
the file system itself is not growing during this time (it appears to be 
writing over the same chunk of space over and over again).  Memory on the box 
is not being swapped while all of this is happening.  I would have guessed that 
a "select count(*)" would not require a bunch of writes, and I can't begin to 
figure out why the number of blocks written are so much higher than the blocks 
read.  If I modify the where clause to only count the rows for a given minute 
or two, I see the reads but I never see the unusual write behavior.

Any thoughts into what could be going on?  Thanks in advance for your help.

Doug



      

Reply via email to