Free Record Chains

Free Record Chains

Post by Charles Thompso » Wed, 03 May 1995 04:00:00



Does anyone know what Free Record Chains are and how they work ?  The  
Activity option of PROMON show a value for "FR Chains", but it is  
undocumented.  Our database always shows 0 blocks, but the examples in the  
SA books show numbers like 16 blocks.  Progress support has no clue, nor  
do they have any documentation.

If Progress is like other databases, I think this is an indication of the  
fragmentation of records.  Here's how I think it works (if you know  
different, I would apreciate a posting here) :

Deleted records provide free records which are added to the FR chain.
New records are stored in these holes (using the FR chain), or at the  
high-water mark if there are no free records.  This means that there  
should be no FR chains if you have never deleted any records, right ?

--  
=-=-=-=-=-=-=-=-= C h a r l e s   T h o m p s o n =-=-=-=-=-=-=-=-=

=-=-=-=-=-=-=                   /\                    =-=-=-=-=-=-=
=-=--==-=-=                     \/                      =-=-=-=-=-=

 
 
 

Free Record Chains

Post by Corwin Lon » Wed, 03 May 1995 04:00:00


Ok, to get a little technical:

The free records chain points to all data type blocks that have some
space remaining. This means that they may not be completely empty,
they may contain data from this or other files.

Now, if you're doing nothing but adding records, or deleting and then
adding more than you deleted, then this chain length will usually be
0.

Why should you care about this? One good reason is the blocked chain,
an unusual condition that occurs if a record gets added to the chain,
has some free space remaining, yet for some reason can't utilize this
space. The way Progress reacts to this is to add a new block (remember,
block sizes differ per OS!) and then add in the new record. It then
goes through the process again, and again, and again, for each new
record. Since each record (good DB design!) is probably not as big
as you block size, you get a lot of wasted space.

So...

You'll get a very large free chain, and the database size grows very
rapidly.

For more info, consult your copy of Dan Foremans tuning tips and
techniques book or the conference notes from 1990.

                                                Corwin

 
 
 

Free Record Chains

Post by Peter Headlan » Thu, 04 May 1995 04:00:00


Quote:> Does anyone know what Free Record Chains are and how they work ?

Briefly:

o  Each *block* in the database (usually 1KB, but depends on O/S) can hold up
   to 32 *records*.  Records from different tables may be mixed freely within
   blocks.

o  The Free Chain is a chain of blocks which are *empty*.

o  The Record Manager Chain (RM Chain) is a chain of blocks which have enough
   free space (and less than 32 records in them) for further records to be
   added.

o  When creating a record, Progress tries to use space in the RM chain first
   and only allocates from the Free list if it can't find room in the RM chain
   after a set number of attempts (a small number, around 3, I believe). Blocks
   on the RM chain which don't have enough space are moved to the back of the
   RM chain as part of this process, so eventually all blocks on the RM chain
   get considered.

o  Unless you delete large numbers of records from your database, it is quite
   likely that there will be no absolutely empty blocks, and hence your free
   list will be empty.  This just shows how efficient Progress is being at re-
   using space, so be happy!

The above is, of course, somewhat simplified, but you get the idea.

--
Peter Headland - Matrix Link Limited - Stoke-on-Trent, UK

 
 
 

Free Record Chains

Post by MadPa » Fri, 05 May 1995 04:00:00


Quote:>Why should you care about this? One good reason is the blocked chain,
>an unusual condition that occurs if a record gets added to the chain,
>has some free space remaining, yet for some reason can't utilize this
>space....

This sounds potentially ugly.  Something just occured to me, though.  If a
blocked chain is as easy to describe as you've just done, Corwin (and, by
the way, thank you for the informative description), it should be just
about as easy for Progress to detect internally.  Why wouldn't it, in such
a case, merely take the "offending" block off the chain?  That way, next
time 'round, there's no more blocked chain.  Granted, there's still a
problem, but a much less severe one than that which requires database
growth _every_ time a record is added.
 
 
 

Free Record Chains

Post by Peter Headlan » Fri, 05 May 1995 04:00:00


Quote:"Corwin Long" writes:
> The free records chain points to all data type blocks that have some
> space remaining. This means that they may not be completely empty,
> they may contain data from this or other files.

This is simply not true.  See my earlier posting for the true story.

Quote:> Why should you care about this? One good reason is the blocked chain,
> an unusual condition that occurs if a record gets added to the chain,
> has some free space remaining, yet for some reason can't utilize this
> space. The way Progress reacts to this is to add a new block (remember,
> block sizes differ per OS!) and then add in the new record. It then
> goes through the process again, and again, and again, for each new
> record.

No, it doesn't.  There is such a thing as the "blocked chain", but this is
not a good description of how it works and no current version of Progress has
this problem.

Quote:> For more info, consult your copy of Dan Foremans tuning tips and
> techniques book or the conference notes from 1990.

I just did.  I can't find any confirmation of the claims made above.

--
Peter Headland - Matrix Link Limited - Stoke-on-Trent, UK

 
 
 

1. latch free - cache buffers chain problem

Hello All,
oracle 8 .1.7.1.0 , OS : Solaris 8, app - pepolesoft portal database

Extrmely hi latching event problem with cahce buffers chains

The top event in statspack report is latch free %total wait time
is 88%.
Top 5 Wait Events
~~~~~~~~~~~~~~~~~ Wait % Total
Event Waits Time (cs) Wt Time
-------------------------------------------- ------------ ------------ -------
latch free 1,880 3,421 88.38

Latch activity for DB section shows following as troublesome :

cache buffers chains 9,196,960 13.0 0.0 75 0.0

drilled through v$latch, v$latch_children and x$bh as per oracle technote 61988.1
Was able to find that TCH for blk 5725 in file#12 is abnornally high i.e. 3390.
But that doc stops there. Does not tell how to fix it.
Any help will be apprciated.

Thx

2. Thank You and Opening Text Files

3. Freeing of chained row blocks

4. DBPROCESS died of not enable

5. Error - used memo block in free list chain (Paradox 5)

6. How many byte NUMER(19) take?

7. Used memo block in free list chain

8. ==== FREE MONEY FREE MONEY FREE MONEY ======

9. !FREE OFFER FREE OFFER FREE!

10. ARE YOU FREE ARE YOU FREE ARE YOU FREE

11. %%% FREE KIT FREE KIT FREE KIT %%%

12. Free Report ### Free Report $$ Free Report