Kbase P183457: Space allocation issue with LOB objects created by an ODBC client
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  29/03/2011 |
|
Status: Unverified
SYMPTOM(s):
Space allocation issue with LOB objects created by an ODBC client
SQL engine is not using the database block efficiently to create LOB records in a Type II storage area
LOB objects are being created with ODBC SQL connection
BLOB is in a Type II storage area that shows excessive space usage after being loaded by ODBC client
1000 blobs of 159 KB each result in 1.4GB space usage as opposed to an estimated 150 MB
prostrct statistics showing physical storage being used by the LOB Storage Area as being 1.4 GB
FACT(s) (Environment):
1 records per block
512 cluster size
8 KB database block size
Using default create and toss limits for a database block
LOB objects are stored in their own TYPE II Storage area with 1 record per block as recommended by Solution P88663
Multiple users are not creating and updating records from one table simultaneously
UNIX
Windows
OpenEdge 10.0x
OpenEdge 10.1x
CAUSE:
Bug# OE00204762
CAUSE:
The code in the SQL engine to append data to an existing blob fragment was not working properly. Each SQLPutData() of 1KB was creating a new record to hold the blob fragment rather than appending the next 1KB to the existing record. This issue has been in the product since blobs were introduced.
FIX:
Upgrade to OpenEdge 10.2B04 or later where this issue has been fixed so that each record holding the blob data will now grow to 32K across 4 8K blocks (for example) before a new record fragment is created for the LOB segment.
Note, this issue affects only LOBS created via the SQL engine, it cannot be reproduced with ABL code in OpenEdge 10.1B02 and above.
Workaround:
Change the records per block to 8 or 16 for an 8KB database blocksize to allow more recids available for each database block to fill. The ideal value depends on the size of the LOB object that the ODBC client is creating. First verify in a test environment.