Feedback
Did this article resolve your question/issue?

   

Article

How to create a Type II Storage Area

Information

 
TitleHow to create a Type II Storage Area
URL NameP90301
Article Number000141445
EnvironmentProduct: OpenEdge
Version: 10.x, 11.x
OS: All supported platforms
Question/Problem Description
How to create a Type II Storage Area?
How to create ASA II?
What is a Type II Storage Area?
What are the differences between Type II and Type I Storage Areas?
How many more records can a Type II Storage Area contain than a Type I Storage Area?
What is the maximum area size of a Type II Storage Area compared to a Type I Storage Area?
Does a Type II Storage area have a maxarea limit like Type I Storage Areas?
Steps to Reproduce
Clarifying Information
Error Message
Defect/Enhancement Number
Cause
Resolution
Differences between Type II and Type I Storage Areas:

1. The Type II Storage Area architecture was introduced in OpenEdge 10.  The difference between Type I Storage Areas (introduced in Progress 9.x) and Type II Storage Areas structure is the concept of "clusters" per Storage Area which are a grouping of database blocks.  There are three choices for cluster size:
  • Small Clusters (8 database blocks),
  • Medium Clusters (64 database blocks),
  • Large Clusters(512 database blocks).
Whereas a Type I Storage Area contains individual database blocks, or in the new definition, a 1 database block Cluster size.
2. The maximum size of a Type II Storage Area is fixed at approximately one Petabyte when:
  • Large files are enabled.
  • A maximum of 1024 extents per area and
  • A maximum size of one terabyte per extent.
:: Type II maxarea  = 1PB maximum area size

max Type II area size = 
max-number-of-extents-per-area * max-extent-size

The theoretical maximum number of records per Type II Storage Area is calculated as follows:
:: Type II max records

max Type II records per area = 
max Type II area size * records-per-block / db_blocksize

For example, a Type II Storage Area with 64 records per block defined in a database with KB blocksize,
would yield 2^46 or 70,368,768 million addressable rows.

The maximum number of records per Type II Storage Area is governed by the maximum area size rather than the addressability of 64-bit database keys. As opposed to the 2^31 addressable rows per area which imposes the hard limit on the maxarea size for Type I Storage areas (and Type II Storage Areas prior to OpenEdge 10.1B).
 
:: Type I maxarea
max Type I area size = 
2,147,483,648 / (records-per-block) *db_blocksize

Continuing the above example, a Type I Storage Area with 64 records per block defined in a database with 4 KB blocksize, would yield a 128 GB Maximum Type I Storage Area size.

Additionally OpenEdge reserves space within each area for recovery purposes. The reserved space allows room for database growth during recovery. A database area can grow up to its maximum size, less the reserve recovery space. Please refer to Article 000012254 for further details on reserved space and Article 000044869 which discusses the 2^31 rowid limit in further detail.

Creating a Type II Storage Area Structure:

The method is no different from creating Type I Storage Areas (PROSTRCT CREATE | ADD). The difference is the definition in the structure file (.st) used. In addition to the Type I structure file, a third parameter after the "records per block" area definition, defines the number of blocks per cluster for that Storage Area:
  • Type I Storage Areas are identified as being defined with 1 database blocks per cluster (or the value not specified at all).
  • Type II Storage Areas are identified as being defined with either 8, 64, or 512 database blocks per cluster.

For example:

Type I Storage Area definition:
   
d "[storage area name]":[area number],[records per block] [location] [f/v] [size (KB)]
# Type I Area 13, 64 records per block, 1 blocks per cluster
# The omission of the cluster size defaults the area to a Type I structure.
d "Data AreaI":13,64 /data f 1024000
d "Data AreaI":13,64 /data

# cluster size = 1, with the same result as above, a Type I structure:
d "Data AreaI":13,64;1 /data f 1024000
d "Data AreaI":13,64;1 /data



Type II Storage Area definition:
        
d "[storage area name]":[area number],[records per block];[cluster size] [location] [f/v] [size (KB)]

 
# Type II Area 131, 64 records per block, 8 blocks per cluster
d "Data AreaII":131,64;8 /data f 1024000
d "Data AreaII":131,64;8 /data


 
Workaround
Notes
References to Other Documentation:

OpenEdge Data Management: Database Administration:
Database Basics, Creating and Deleting Databases, Creating a database with PROSTRCT CREATE, Creating a structure description file

Progress Articles:

000044869, When does the 2 billion rowid limit per Storage Area apply?   
000010845, How to find out if an extent is a Type I or a Type II Storage Area?   
000021762, Guidelines for Type II Area Blocks per Cluster setting?   
000022169, Can a probkup of Type I Areas be prorest into a Type II Storage Area ?   
000029900, VST's to monitor space in a Type II Storage Area?   
000013241, What to do when you hit the record limit for a Type I area?   
000012254, Reserved space used for recovery limits user addressable maximum storage area size.   
 
Last Modified Date2/25/2020 1:43 PM
Attachment 
Files
Disclaimer The origins of the information on this site may be internal or external to Progress Software Corporation (“Progress”). Progress Software Corporation makes all reasonable efforts to verify this information. However, the information provided is for your information only. Progress Software Corporation makes no explicit or implied claims to the validity of this information.

Any sample code provided on this site is not supported under any Progress support program or service. The sample code is provided on an "AS IS" basis. Progress makes no warranties, express or implied, and disclaims all implied warranties including, without limitation, the implied warranties of merchantability or of fitness for a particular purpose. The entire risk arising out of the use or performance of the sample code is borne by the user. In no event shall Progress, its employees, or anyone else involved in the creation, production, or delivery of the code be liable for any damages whatsoever (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary loss) arising out of the use of or inability to use the sample code, even if Progress has been advised of the possibility of such damages.