There is no conversion utility available to convert from one database block size to another. The existing database must be DUMPED and LOADED into a database with the a new structure.
Progress V8.2 introduces a feature that enhances database performance: Database Variable-block Size.
At creation of a database, specify a database block size that is a multiple of 1024 Bytes. Specifically, 1024, 2048, 4096 and 8192 Bytes.
Previous to v8.2, Progress only created Databases with a blocksize of 1024 Bytes (1 KB), regardless of the File System block size.
The fact that File Systems have different block sizes, added value the value of creating a progress database with a database block size the same as the File System block size.
By default, progress creates a database with a 1k blocksize.
The following lists the default File Systems and their system blocksize.
OS Blocksize V7 DB Blocksize
UNIX (most) 1024 bytes (1k) 1024 bytes (1k)
NT 4096 (4k) 4096 bytes (4k)
CREATING A MULTI-VOLUME DATABASES:
VMS 512 (.5k) 1024 bytes (1k)
DOS 1024 (1k) 1024 bytes (1k)
SEQUENT 2048 (2k) 2048 bytes (2k)
prostrct create <dbname> <dbname.st> -blocksize <num>
where -blocksize <num>
CREATING A SINGLE VOLUME DATABASES:
-blocksize must be the last argument on the command line.
prodb <dbname> $DLC/empty1
procopy $DLC/empty1 <dbname>
... empty2 <dbname>
... empty4 <dbname>
... empty8 <dbname>
DATABASE BUFFERS (-B) AND VARIABLE BLOCKSIZE DATABASES
The -B parameter is used to define the number of database blocks to be loaded in the database buffer pool at startup of the database broker. If a database was created with the default block size of 1KB, (prior to Version 8.2) the database buffer pool (-B) will be in 1 KB increments. If a database has been created with a block size of 2KB, 4 KB or 8 KB, then the database buffer pool (-B) will be in the increments of 2 KB, 4 KB or 8 KB, respectively. This can be displayed from the promon utility in R&D,option 1, option 14 Shared Memory Segments.
The following, lists Shared memory segment sizes from different Database block sizes on an HP-UX 10.10. Note the segment size is slightly larger than the blocksize multiplied by the (-B 1000).
The point here is to be aware that the amount of memory increases (-B) parallel to the size of the database blocksize.
Example: proserve <dbname> -B 1000
Shared Memory Alloc. x (-B) = Segment Size
DB Blocksize(bytes) Shared Memory Alloc(bytes) Segment Size(bytes)
1024 1380 1413120
2048 2432 2490368
4096 4540 4648960
8192 8756 8966144
- There is no conversion utility available to convert from one database block size to another. The existing database must be DUMPED and LOADED into a database with the a new structure.
- Procopy or prorest command cannot be used to create a database of a different block size. The following error will occur:
Source and Target databases should have same block size: 1024, 4096
A database will use more disk space moving to a larger block size. For example, converting a database with 100 records from a 1 KB block size with 32 records per block to an 8 KB block size with 64 records per block produces the following results:
1KB block size : 100rec/32rec per block = 3.125(or 4blks) x 1 KB = 4 KB
8 KB block size : 100rec/64rec per block = 1.563(or 2blks) x 8 KB = 16 KB
- It has been increasingly noticed that a larger block size than 1 KB are becoming available on many OS platforms. There are performance improvements in moving to block sizes that are equal to or a multiple of the underlying file system's block size.
- There are underlying physical differences between 1, 2, 4 and 8 KB database block sizes. The record manager will manage 64 records per block with an 8 KB blocksize database and 32 records per block with a 1, 2 and 4 KB blocksize database. Thus. reducing the amount of i/o required to access records both through an index and sequentially.. reducing the amount of i/o required to access records both through an index and sequentially..