ID Number: Q39154
1.00 1.10 1.11 4.20
OS/2
Summary:
This is part 2 of the SQL Server disk-space management discussion.
Part 1 of the discussion described how SQL Server acquires disk space
and how it creates databases and assigns them groups of pages.
Part 2 below covers the segmentation of global page-number space and
the relationship of the "virtual device number" (VDEVNO) and low and
high global page numbers to the database device.
More Information:
The address space for database global page numbers is segmented by
interpreting the 32-bit global page number as two separate components.
The high-order 8 bits is the VDEVNO and the remaining 24 bits is the
relative page number from the beginning of that device. This is
similar to segmented addressing schemes in operating systems that use
a segment number and offset within the segment. The following are
examples:
0x01000003 is page 3 on device 1
0x02000003 is page 3 on device 2
This is why virtual device number 1 has a starting page number of
16777216 (0x01000000 = 16777216).
The segmentation scheme allows database devices in the middle of the
global page space to be expanded without affecting the page addresses
of existing data. For example, device 1 could be initially allocated
as 2 megabytes (giving it a starting page number of 16777216 and an
ending page number of 16778240). Then, device 2 is added, also 2
megabytes in size (33554432 to 33555456). Later, it becomes necessary
to increase the size of device 1. There is no problem because each
device has a page space of 16 million pages reserved for it. This does
mean that each database device is limited to 32 gigabytes (16 million
pages times 2048 bytes per page).
The discontinuous global page space is mapped into a contiguous local
page space for each database by the entries in SYSUSAGES. Each entry
associates a contiguous block of global pages (not necessarily an
entire database device) with a range of local pages for a particular
database. This is done by recording the starting global page number,
the starting local page number, and the number of pages.
The local page space completely insulates each database from the
complexity of the discontinuous global page-numbering system and allows
each database to refer to its pages as though they were consecutively
numbered starting with 0. Databases are expanded by adding contiguous
blocks of pages to the end of local page space.