Re: buffer cache structure in SGA

  • From: Orlando L <oralrnr@xxxxxxxxx>
  • To: jonathan@xxxxxxxxxxxxxxxxxx
  • Date: Tue, 3 Apr 2018 18:07:10 -0500

"It's probably worth including the point that the linked list is still
there".

Am I correct in assuming the linked list points to buffers in the hash
table?


On Tue, Apr 3, 2018 at 2:29 AM, Jonathan Lewis <jonathan@xxxxxxxxxxxxxxxxxx>
wrote:


It's probably worth including the point that the linked list is still
there - the effect of the touch count is that a buffer is not moved to the
head of the list every time it is touched (which is why the latch activity
became a threat), but it only moved when it reaches the tail of the list,
and then only if it has been touched on the way down.

(Obviously lots more detail I've omitted - but it's in the book)

Regards
Jonathan Lewis

________________________________________
From: oracle-l-bounce@xxxxxxxxxxxxx <oracle-l-bounce@xxxxxxxxxxxxx> on
behalf of Mladen Gogala <gogala.mladen@xxxxxxxxx>
Sent: 03 April 2018 08:07
To: oracle-l@xxxxxxxxxxxxx
Subject: Re: buffer cache structure in SGA

Well, not quite the same. In Oracle 8i, buffers were managed by a linked
list. The oldest buffers were at  the tail of list, the most recently
touched buffers were at the head of the list.  Since Oracle 9.2 buffers are
managed by the "touch count".   Basically, when Oracle would need to free
buffer in Oracle 8i, it would take certain number of buffers from the end
of the linked list, save them and allocate them to processes that needed
them. The problem was that to manipulate the linked list, Oracle would need
to acquire the latch. And latches can be expensive. So, with touch counts,
the organization was different, the need for latches was much smaller.

In Oracle 11.2, the whole system of pins and latches was completely
reorganized, which resulted in Oracle 11.2.0.1 being practically unusable.
Situation has improved greatly in 11.2.0.4. Now, there are some additional
changes in 12c, to prevent connections to different PDB's  from stealing
buffers from each other. If you check db_cache_size parameter in Oracle
12.2, you will see that it's modifiable within PDB:
--
//www.freelists.org/webpage/oracle-l



Other related posts: