- 最后登录
- 2023-8-16
- 在线时间
- 1686 小时
- 威望
- 2135
- 金钱
- 50532
- 注册时间
- 2011-10-12
- 阅读权限
- 200
- 帖子
- 5207
- 精华
- 39
- 积分
- 2135
- UID
- 2
|
6#
发表于 2014-8-15 13:39:47
ODM FINDING:
Searching for Space in L1 BMB
In each L1 BMB, find the most free DBA: the L1 BMB can be treated like a 2-
dimensional grid of DBAs: 16 X n (one dimension of the grid is fixed at 16). Hashing on
the process ID provides a random block as a starting point into the L1 BMB. Starting at
this point, the Oracle server commences to build an array of five candidate blocks. Moving
down the grid in a column-first fashion the Oracle server looks at every nth block
(wrapping around the block and continuing looking at other columns). When a candidate
DBA is seen, the Oracle server attempts to get the block in a nowait mode. If there is a
process active on the block, we move on to the next candidate block. The Oracle server
only does nowait gets on DBAs five (5) times before giving up this behavior and
releasing the L1 BMB, then just waiting to get a data block pinned in exclusive mode.
This model significantly reduces buffer busy waits events in the buffer cache. If an
unformatted DBA is found, the Oracle server releases the L1 BMB, regets it in exclusive
mode, formats a range of data blocks (16), moves HWMs as appropriate and then releases
the L1 BMB. A check is performed to see if the block pinned is useful (may not be usable
due to free-space credits being exposed in the L1 BMB). If it is useful, then the space
search is complete.
Note: The second dimension of the grid is a factor of the segment size.
|
|