Re: extent problem
Posted in 2000
If you do not specify your extent size at object creation then Informix
will default your extent size to 8 pages. The Informix extent algorithm
doubles every 16 extents so extents 17-32 will be made up of 16 pages,
33-48 will be 32 pages per extent and so on and so on. You can man-
ually assign initial extent size (highly recommended), it does not have
to be 8 page (min extent size is 4 pages) allocations.
When allocating extents Informix starts with the first chunk and works
it's way to the last chunk (numeric sequence, chunk ordering by cron-
ological sequence) trying to find contiguous space equal to the size of
the extent. Informix will not create an extent that spans chunks, instead
if it cannot find a large enough contiguous extent, it will allocate the
largest extent possible given the available space after considering all
chunks. In addition Informix will not give you an error message telling
you if your extent allocation failed and instead you were allocated
only a small fraction of that extent space.
You can see that the doubling effect can get out of control quickly
and if your dbspace is comprised of multiple chunks these can be
excessively fragmented within a very short time. It would be interest-
ing to determine where the 'free space' is that your dbspace has left
and how fragmented it is ?
1) Check your disk space to ensure you actually have the space
you think you have, that underlays the Informix chunks. One of
the resolutions for the -271 error is that Informix thinks you have
a no more available space on the device in question.
2) Assuming cooked devs, check the ulimit on the Informix user
is sufficient to allow filesystem consumption as per your table
load.
3) Assuming you are dealing with a very large table that will likely
use most or all of the dbspace in question, try setting your initial
extent to the size of the primary chunk, if all subsequent chunks
are the same size you can assign up 8 chunks to the dbspace
before you have to consider the effect of extent-doubling.
Moreover, your system will not be thrashing itself trying to
continuously allocate extents for a table load. This is unneccess-
ary overhead that can be easily avoided.
The Informix sysadmin manuals are very clear on extent architect-
ure. When you get a chance I recommend broadening your under-
standing of how this fits into the scheme of things.
have a nice day.
Yan Zhu wrote:
> hey all:
>
> Trying to load a table, having the following problem:
>
> 271: Could not insert new row into the table. 136: ISAM error: no> more extents
> 847: Error in load file line 59770.>
> hmm, what does this mean? and how can I fix it? I don't even remeber
> setting up extents when I create the tables.
> I checked the dbspace, plenty left, how could it run out?
>
> running 7.23 on solaris 7.0.
>
> thanks a lot guys.
>
> yan