Table Fragments and Subfragments

A table fragment is where data is stored. The fragment is further subdivided into subfragments. A table fragment may contain one or more subfragments.

Data is stored in data blocks inside subfragments. There are two types of data blocks:

Each subfragment has an independent storage data structure and only the dictionary is shared across subfragments. An active subfragment can contain multiple data blocks, but only one data block is active for insertion for each column at any one time.

An insertion into a table always uses the active data block. When the active data block becomes full, a new active data block is automatically created in the subfragment. During parallel inserts, if contention occurs, new subfragments, each containing an active data block are created.

Memory allocation is triggered by insertions that require the creation of new subfragments or additional data blocks within a subfragment. Subsequent inserts into active data blocks do not require the allocation of additional memory. It is not until additional subfragments or data blocks are required that additional memory is allocated. This may result in the appearance of periodic memory spikes during a bulk load rather than a continuous, gradual rise in memory allocation.