25 Jan 98

Disk storage

As previously mentioned, the page size is now 8K. Note that, due to OS file limitations, the I/O is not atomic; a page is written in 512KB chunks. There is a mechanism for detecting "torn" pages. Pages are managed with a slot array pointing to the records on the page (similar to the way pages containing variable length records are currently managed.)

Devices are gone. Databases live on files. Files can be organized into File Groups. Database objects can be placed on any file group (similar to old segments). It is no longer possible to have the transaction log in the same file as the data. You cannot have multiple databases in the same file. Database files can grow and shrink automatically.

File groups provide the ability to distribute data over different physical disk drives and support a future key based file partitioning.

Some extents will now contain pages from different objects. Mostly this is used for small tables.

The storage of text/image data is different. Instead of one pointer to a linked list, there is a b-tree structure that points to the fragments of text/image data. Small text objects share pages.

Every row has a unique RowID. If there is no clustered index, there is an assigned rowid which does not change even if the row moves. If there is a clustering index, the rowid is the clustering key. An uniquifier is added if the clustered index is non-unique.

Secondary indexes use the rowid or clustering key to point to the rows. This means that, for a secondary index, it will first look up the row id. If the underlying table is a heap (no clustered index), it will use the row id. If the underlying table has a clustered index, it will use the clustered index to locate the record.

There are no bit mapped indexes.

The Max row len is 8060.


Many thanks to Sharon for providing these notes - drop her a note at sharond@compuserve.com and tell her thanks!