Re: again on index usage
Hannu Krosing <hannu@tm.ee>
From: Hannu Krosing <hannu@tm.ee>
To: Don Baccus <dhogaza@pacifier.com>
Cc: Zeugswetter Andreas SB SD <ZeugswetterA@spardat.at>, Bruce Momjian <pgman@candle.pha.pa.us>, Daniel Kalchev <daniel@digsys.bg>, Tom Lane <tgl@sss.pgh.pa.us>, pgsql-hackers@postgresql.org
Date: 2002-01-12T15:08:24Z
Lists: pgsql-hackers
Don Baccus wrote: > > Zeugswetter Andreas SB SD wrote: > > > This is one of the main problems of the current optimizer which imho rather > > aggressively chooses seq scans over index scans. During high load this does > > not pay off. > > Bingo ... dragging huge tables through the buffer cache via a sequential > scan guarantees that a) the next query sequentially scanning the same > table will have to read every block again (if the table's longer than > available PG and OS cache) b) on a high-concurrency system other queries > end up doing extra I/O, too. > > Oracle partially mitigates the second effect by refusing to trash its > entire buffer cache on any given sequential scan. Or so I've been told > by people who know Oracle well. A repeat of the sequential scan will > still have to reread the entire table but that's true anyway if the > table's at least one block longer than available cache. One radical way to get better-than-average cache behaviour in such pathologigal casescases would be to discard a _random_ page instead of LRU page (perhaps tuned to not not select from 1/N of pages on that are MRU) ------------- Hannu