Kbase P163525: Why will a table take up more space on disk then the size reported in tabanalys?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  4/11/2010 |
|
Status: Unverified
GOAL:
Why will a table take up more space on disk then the size reported in tabanalys?
GOAL:
What features of a record block account for the extra space requirements beyond the need just for record data?
GOAL:
Why you can not use record size alone to determine disk space needs for table?
FACT(s) (Environment):
All Supported Operating Systems
OpenEdge 10.x
FIX:
The records placed on disk are written to blocks and a block has additional space requirements beyond just the space taken up by the data in the record:
A record block has the following parts:
+--------------------+
| Block header |
+--------------------+
|Cluster header |
+--------------------+
| RM header |
+--------------------+
| row directory |
+--------------------+
| Expansion space |
+--------------------+
| Free space |
+--------------------+
| Table rows |
+--------------------+
In type II areas, the block header consumes 64 bytes while taking 16 bytes for type I areas.
The cluster header is present in the first block of a type II area allocation cluster and not in the other blocks of the allocation cluster and takes up 16 bytes.
The RM header consumes about 10 bytes.
The row directory is variable size and each entry consumes 2 bytes. The number of entries depends on how many rows were stored and can expand up to the maximum rows per block value.
Expansion space is reserved space for row expansion, initially sized by the create limit setting .
Free space is unused space available for adding record or for record expansion.
Table rows are packed together at the end of the block and this grows upward toward the row directory, which grows downward.
In addition to all the block overhead, there is some overhead in each table row as well.