| From: | Steve Adams |
| Date: | 13-Oct-2000 09:52 |
| Subject: | _db_block_hash_buckets |
|
|
The length of time for which a hash latch is retained is almost directly proportional to the number of buffers on the hash chain that is being accessed. Therefore the risk of latch contention is reduced if the average length of the hash chains is short. In the past, under default settings the average length of each chain was 4 buffers. Of course, at any point in time some chains would be much shorter than average (maybe even empty) and others would be much longer than average. However, if _db_block_hash_buckets were set to 2 * db_block_buffers then almost all hash chains would be either empty or hold just one or two buffers. In the absence of hot buffers or a proliferation of clones, that would reduce the risk of latch contention by a factor of 4 or more. Even although most cache buffers chains latch contention issues are in fact due to hot blocks, making this change to _db_block_hash_buckets has for years been a fairly standard tuning step as a matter of due diligence. The only negative side effect was the unwanted proliferation of hash latches. By breaking the nexus between hash chains and hash latches in 8.1, Oracle have eliminated that side effect and have therefore decided to mandate the larger number of hash buckets.
|
![]() |
Pardon my ignorace, but why does oracle create more hash buckets than database block buffers?
|