Exploring the Chunk Free List Mechanism in GBase 8s Database

In database management, space allocation and reclamation are critical operations for ensuring efficient data storage. The GBase 8s database system uses its unique Chunk Free List mechanism to precisely track the available space within each chunk. Below, we will explore how this mechanism works and its importance. Overview of Chunk Free List Each chunk needs a mechanism to track its available space. After the last reserved page in each chunk, there is the chunk free list page. Depending on the fragmentation within the chunk, this page can be one of several pages and contains structures that point to unused blocks of data. Each structure or free list entry contains two elements: the starting page of the unclaimed range and the length of the free range measured in pages. The layout of the chunk free list is as follows: Operations Affecting the Chunk Free List 1. Space Allocation When an extent is allocated within a chunk, the loss of available space is reflected by removing an entry from the chunk free list or modifying one or both elements within the entry. 2. Space Reclamation When a table is deleted, or in some cases when a table is altered, IDs will release space. When reclaiming available space, new entries can be added to the chunk free list. If the newly freed space is adjacent to existing free space, only the length element in the related free list entry is modified; otherwise, a new entry is created. 3. Additional Chunk Free List Page If a chunk becomes so fragmented that the initial chunk free list page is filled with entries, an additional chunk free list page will be allocated. These pages are then linked together in a linked list. Each link in this chain is responsible for extending only between itself and the next chunk free list page. This design requires good coordination between the links. Practical Operation: Finding the Chunk Free List Page 1. Finding the Chunk Free List Page By using oncheck –pe, you can find the location of the chunk free list page: DBspace Usage Report: rootdbs Owner: gbasedbt Created: 07/18/2024 Chunk Pathname Pagesize(k) Size(p) Used(p) Free(p) 1 /gbase8s/3.3.0_2X4_1/ids/storage/rootdbs 2 78848 24758 54090 Description Offset(p) Size(p) ------------------------------------------------------------- -------- -------- RESERVED PAGES 0 12 CHUNK FREELIST PAGE 12 1 ... DBspace Usage Report: plog Owner: gbasedbt Created: 07/18/2024 Chunk Pathname Pagesize(k) Size(p) Used(p) Free(p) 2 /gbase8s/3.3.0_2X4_1/ids/storage/ol_gbasedbt1210_20240718181816_plog_p_1 2 32768 32768 0 Description Offset(p) Size(p) ------------------------------------------------------------- -------- -------- RESERVED PAGES 0 2 CHUNK FREELIST PAGE 2 1 ... DBspace Usage Report: datadbs1 Owner: gbasedbt Created: 07/18/2024 Chunk Pathname Pagesize(k) Size(p) Used(p) Free(p) 4 /gbase8s/3.3.0_2X4_1/ids/storage/ol_gbasedbt1210_20240718181816_datadbs1_p_1 2 32768 269 32499 Description Offset(p) Size(p) ------------------------------------------------------------- -------- -------- RESERVED PAGES 0 2 CHUNK FREELIST PAGE 2 1 2. Viewing the Page Content By using the oncheck -pP command, we can view the content of a specific chunk's Chunk Free List Page, which provides the offset and length of free regions. [root@node2 ids]# oncheck -pP 1 12 addr stamp chksum nslots flag type frptr frcnt next prev 1:12 3976329 acb8 8 808 CHUNK 32 2008 0 0 start length 263 2 6421 4 9561 4 14001 24 14401 13046 29663 1 30248 2 37841 41007 A chunk free list entry consists of two pieces of data: The offset of the free region within the chunk (measured in pages). The number of pages that the free region spans. Viewing the chunk free list page for datadbs1: [root@node2 ids]# oncheck -pP 4 2 addr stamp chksum nslots flag type frptr frcnt next prev 4:2 380982 d035 1 808 CHUNK 32 2008 0 0 start length 269 32499 Conclusion By gaining a deeper understanding of the GBase

Jan 17, 2025 - 11:09
Exploring the Chunk Free List Mechanism in GBase 8s Database

In database management, space allocation and reclamation are critical operations for ensuring efficient data storage. The GBase 8s database system uses its unique Chunk Free List mechanism to precisely track the available space within each chunk. Below, we will explore how this mechanism works and its importance.

Overview of Chunk Free List

Each chunk needs a mechanism to track its available space. After the last reserved page in each chunk, there is the chunk free list page. Depending on the fragmentation within the chunk, this page can be one of several pages and contains structures that point to unused blocks of data. Each structure or free list entry contains two elements: the starting page of the unclaimed range and the length of the free range measured in pages.

The layout of the chunk free list is as follows:

Image description

Operations Affecting the Chunk Free List

1. Space Allocation

When an extent is allocated within a chunk, the loss of available space is reflected by removing an entry from the chunk free list or modifying one or both elements within the entry.

2. Space Reclamation

When a table is deleted, or in some cases when a table is altered, IDs will release space. When reclaiming available space, new entries can be added to the chunk free list. If the newly freed space is adjacent to existing free space, only the length element in the related free list entry is modified; otherwise, a new entry is created.

3. Additional Chunk Free List Page

If a chunk becomes so fragmented that the initial chunk free list page is filled with entries, an additional chunk free list page will be allocated. These pages are then linked together in a linked list. Each link in this chain is responsible for extending only between itself and the next chunk free list page. This design requires good coordination between the links.

Practical Operation: Finding the Chunk Free List Page

1. Finding the Chunk Free List Page

By using oncheck –pe, you can find the location of the chunk free list page:

DBspace Usage Report: rootdbs             Owner: gbasedbt  Created: 07/18/2024

Chunk Pathname                             Pagesize(k)  Size(p)   Used(p)  Free(p)
1 /gbase8s/3.3.0_2X4_1/ids/storage/rootdbs            2    78848     24758    54090

Description                                                    Offset(p)  Size(p)
------------------------------------------------------------- -------- --------
RESERVED PAGES                                                        0       12
CHUNK FREELIST PAGE                                                 12        1
...
DBspace Usage Report: plog                Owner: gbasedbt  Created: 07/18/2024

Chunk Pathname                             Pagesize(k)  Size(p)   Used(p)  Free(p)
2 /gbase8s/3.3.0_2X4_1/ids/storage/ol_gbasedbt1210_20240718181816_plog_p_1            2    32768     32768        0

Description                                                    Offset(p)  Size(p)
------------------------------------------------------------- -------- --------
RESERVED PAGES                                                        0        2
CHUNK FREELIST PAGE                                                   2        1
...
DBspace Usage Report: datadbs1            Owner: gbasedbt  Created: 07/18/2024

Chunk Pathname                             Pagesize(k)  Size(p)   Used(p)  Free(p)
4 /gbase8s/3.3.0_2X4_1/ids/storage/ol_gbasedbt1210_20240718181816_datadbs1_p_1            2    32768       269    32499

Description                                                    Offset(p)  Size(p)
------------------------------------------------------------- -------- --------
RESERVED PAGES                                                        0        2
CHUNK FREELIST PAGE                                                  2        1

2. Viewing the Page Content

By using the oncheck -pP command, we can view the content of a specific chunk's Chunk Free List Page, which provides the offset and length of free regions.

[root@node2 ids]# oncheck -pP 1 12
addr             stamp    chksum nslots flag type         frptr frcnt next     prev
1:12             3976329  acb8    8      808  CHUNK         32    2008  0         0
  start    length
    263        2
   6421        4
   9561        4
  14001        24
  14401     13046
  29663        1
  30248        2
  37841     41007

A chunk free list entry consists of two pieces of data:

  • The offset of the free region within the chunk (measured in pages).
  • The number of pages that the free region spans.

Viewing the chunk free list page for datadbs1:

[root@node2 ids]# oncheck -pP 4 2
addr          stamp    chksum nslots flag type         frptr frcnt next     prev
4:2           380982   d035    1      808  CHUNK         32    2008  0         0
  start    length
  269      32499

Conclusion

By gaining a deeper understanding of the GBase 8s database's Chunk Free List mechanism, we can see how it precisely manages database space. This mechanism not only improves space utilization but also optimizes database performance. As a database administrator, mastering this mechanism is crucial for maintaining the stability and efficiency of the database. We hope this article helps you better understand the GBase 8s Chunk Free List and enhances your database management skills.