Oracle 自动段空间管理(ASSM:auto segment space management)
Description of "Figure 12-3 Logical Space Management"
A locally managed tablespace maintains a bitmap in the data file header to track free and used space in the data file body. Each bit corresponds to a group of blocks. When space is allocated or freed, Oracle Database changes the bitmap values to reflect the new status of the blocks.
The following graphic is a conceptual representation of bitmap-managed storage. A 1
in the header refers to used space, whereas a 0
refers to free space.
?
A locally managed tablespace has the following advantages:
·Avoids using the data dictionary to manage extents
Recursive operations can occur in dictionary-managed tablespaces if consuming or releasing space in an extent results in another operation that consumes or releases space in a data dictionary table or undo segment.
·Tracks adjacent free space automatically
In this way, the database eliminates the need to coalesce free extents.
·Determines the size of locally managed extents automatically
Alternatively, all extents can have the same size in a locally managed tablespace and override object storage options.
The ASSM method uses bitmaps to manage space. Bitmaps provide the following advantages:
·Simplified administration
ASSM avoids the need to manually determine correct settings for many storage parameters. Only one crucial SQL parameter controls space allocation: PCTFREE
. This parameter specifies the percentage of space to be reserved in a block for future updates (see "Percentage of Free Space in Data Blocks").
ASSM 管理,只需要一个参数:PCTFREE
·Increased concurrency
Multiple Manual Segment Space Management
The legacy MSSM method uses a linked list called a
Description of "Figure 12-4 Free List Groups"
<!-- -->Managing segment space manually can be complex. You must adjust PCTFREE
and PCTUSED
to reduce row migration (see "Chained and Migrated Rows") and avoid wasting space. For example, if every used block in a segment is half full, and if PCTUSED
is 40, then the database does not permit inserts into any of these blocks. Because of the difficulty of fine-tuning space allocation parameters, Oracle strongly recommends ASSM. In ASSM, PCTFREE
determines whether a new row can be inserted into a block, but it does not use free lists and ignores PCTUSED
.
-- ASSM 会忽略PCTUSED 参数
exec show_space('abc','auto','T','Y');