Second paragraph, I make the comment: “…it’s possible that there are other variations on limits and granule sizes that I haven’t yet come across.” Charles Hooper has added a few more variations in a comment he made on the Glossary, which links to a note he published in May 2011.
first para, first line: “automatic system memory management” should be “automatic shared memory management”.
The Note: “set parameter _disable_cpu_check to false” should be “set parameter _disable_cpu_check to true“.
Figure 5.4: In the first of the two boxes labelled x$kcbwds, the far right-hand entry should be prv_replax rather than prv_repl.
Penultimate paragraph: I say that the touch count is halved as a buffer moves from the cold end of the LRU to the hot end. This is incorrect, the touch count drops to zero. (I have some notes from the very early days of the LRU/TCH (i.e. 8.1) which say I saw the halving effect, but even in 8.1.7 the parameter _db_aging_stay_count exists, is set to zero, and has the description “Touch count set when buffer moved to head of replacement list”. Of course, there are many cases where zero means “use a default internal value or action”, but it seems unlikely in this case.
Note at top of page: “changes the touch count on that buffer to zero”, should be “changes the touch count on that buffer to 1”.
Second para: “(a) every buffer header would be on one of the (repl) lines”. This is a simplification (i.e. it’s not true) aimed at highlighting the basic function of the LRU lists and latches. I should have included some sort of warning or forward reference to the discussion of the other linked lists such as the write lists that are described in ch. 6. See Martin’s comment below
Section “Logical I/O” 3rd Para (At this point…), second line: “consistent get – examination” should be “consistent gets – examination”
Section “Updates”, 2nd para, second line: “buffer busy wait“ should be “buffer busy waitswait“.Section “Updates”, last para, penultimate line: “… older clones on to the replacement list if you …” should be “… older clones on to the auxiliary replacement list if you …”
Section “Loading a Hash Chain” says: “As I commented in Chapter 4, a process is not allowed to request a latch in willing-to-wait mode if it is already holding a lower-level latch.” This statement is the wrong way round (see note below from Sid)- you cannot request a latch in willing-to-wait mode if you are already holding a higher level latch; this error makes the subsequent comments about the complexity involved in dropping and re-acquiring cache buffers chains latches irrelevant – you don’t have to drop the latch.There is another odd error in the same sentence – I don’t say anything about the latch level and it’s use in controlling the order in which willing-to-wait gets can be made.
2nd para after the Note: “If the optimizer thought …” should be “If the runtime engine thought …”