On Mon, 2005-10-24 at 12:00, Craig A. James wrote:
> Kevin Grittner wrote:
> > In addition to what Mark pointed out, there is the possibility that a
> > query
> > is running which is scanning a large table or otherwise bringing in a
> > large number of pages from disk.  That would first use up all available
> > unused cache space, and then may start replacing some of your
> > frequently used data.  
> 
> An LRU cache is often a bad strategy for database applications.  There are 
> two illustrations that show why.
> 
> 1. You have an index that's used for EVERY search, but each search returns a 
> large and unique set of rows.  If it happens that the rows returned exceed 
> the systems cache size, the part or all of your index will be flushed with 
> EVERY query.
> 
> 2. You do a sequential scan of a table that's one block bigger than the file 
> system cache, then you do it again.  At the beginning of the second scan, the 
> first block of the table will have just been swapped out because it was the 
> oldest, so the file system brings it back in, replacing the second block, 
> which is now the oldest.  As you scan the table, each block of the table is 
> swapped out JUST BEFORE you get to it.  At the start of your query, the file 
> system might have had 99.9% of the relevant data in memory, but it swaps out 
> 100% of it as your query progresses.
> 
> Scenario 2 above is interesting because a system that is performing very well 
> can suddenly experience a catastrophic performance decline when the size of 
> the data exceeds a critical limit - the file system's avaliable cache.
> 
> LRU works well if your frequently-used data is used often enough to keep it 
> in memory.  But many applications don't have that luxury.  It's often the 
> case that a single query will exceed the file system's cache size.  The file 
> system cache is "dumb" -- it's strategy is too simple for a relational 
> database.
> 
> What's needed is a way for the application developer to explicitely say, 
> "This object is frequenly used, and I want it kept in memory."

There's an interesting conversation happening on the linux kernel
hackers mailing list right about now that applies:

http://www.gossamer-threads.com/lists/linux/kernel/580789

---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

               http://archives.postgresql.org

Reply via email to