Kbase 15911: How to maximize access speed to database blocks on Progress V6, V7 and V8 using UNIX.
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  23/02/2005 |
|
Status: Verified
GOAL:
How to Maximize Access Speed to Database Blocks under UNIX.
FACT(s) (Environment):
UNIX
FACT(s) (Environment):
Progress 6.x
FACT(s) (Environment):
Progress 7.x
FACT(s) (Environment):
Progress 8.x
FIX:
Even with the smallest databases (Progress Version 6 demo.db is 352KB for example), access to database blocks requires double-level indirection through the inode.
In the following table, the Blksz (block size) is determined at the time the file system is set up. The figures in the remaining columns mean that you can address up to that particular size before you spill over into another level of indirection.
Blksz Direct 1st-indirect 2nd-indirect 3rd-indirect
1K 12K 256K 64MB 16GB
2K 24K 1M 512MB 256GB
4k 48K 4M 4GB
8k 96K 16M 32GB
A 500 MB extent on a 8K file system, for example, requires double-level indirection to access a database data block. Since most systems are typically 2K block size, a 500MB extent is still in the double-level indirection range. By the same token, so is 200MB and 300MB.
Because each database extent requires an open channel, and opening channels is perhaps the most time consuming operation on the system, you must ask yourself:
- If you have enough available channels per process (a kernel parameter).
- If you are willing to take a little longer to bring your servers.
If answer is "yes," go with smaller file extents and enjoy better performance accessing blocks and records.
With today's databases in the 500MB to 20GB range, it is not likely that you can open that many channels. Consequently you must go with larger extends, but fewer of them. Most databases are running with double-level indirection. The trick is to avoid triple-level indirection.