Allen Egerton wrote:
The situation is that I'm potentially adding a million records to a
dynamic file. That's not hypothetical, it's a real life scenario. And
I don't want to wait while the file splits multiple times over the
course of the add. I don't have that large a window. I want to force
the file to expand the weekend before so that when I add the records the
file isn't rebuilding.
The file's already dynamic, so setting Minimum.Modulus doesn't seem to
do me much good unless I can figure out how to force it to split to that
minium.modulos. And there's the crux of my question. How can I force
it to split?
Allen,
Only doing CONFIGURE.FILE . . . MINIMUM.MODULUS does not make the file
grow. It just tells UV that if & when the file ever grows that big,
don't let it shrink smaller. You need to be sneakier.
Here are 2 ways reserving space on DATA.30, & one for OVER.30.
1. Do it this way if you can't have any downtime, but can sneak
writing one bogus little record.
Tinker with MERGE.LOAD & SPLIT.LOAD then repeatedly write a fake record,
so that each write triggers a split until you get to the size you want.
Let's say you want min mod of 10,000 and your current mod is 1,000
CONFIGURE.FILE YOURFILE MINIMUM.MODULUS 10000 MERGE.LOAD 1
SPLIT.LOAD 2
run this:
open "YOURFILE" to F else stop
for i = 1000 to 10000 ;* you need 9000 =10,000-1,000 splits
write '' F, 'dummy'
delete F, 'dummy'
next i
Now set MERGE.LOAD & SPLIT.LOAD TO where you want them (usually 50 & 80).
Until you load your real data you may be well below MERGE percentage,
but merges will not happen because of minimum.modulus parameter..
2. Use resize if you can get exclusive use of the file. (I don't think
"CONCURRENT" works with dynamic files. but I'm wary with static too.)
RESIZE will allow you to set the minimum modulus, but maybe not using
the syntax as documented.
And syntax differs according to acct flavour and OS (and UV rel?)
If RESIZE does nOt recognize MINIMUM.MODULUS on the command line, then
specify the mod explicitly, like you would a static hashed file. That
will become the minimum.modulus and the file will be sized accordingly.
RESIZE YOURFILE 30 10000 4 [SEQ.NUM] (syntax different in Pick
flavour)
will resize the file, type 30, setting MINIMUM.MODULUS TO 10000 and
reserve the disk space in DATA.30, setting the current modulus to 10000 too.
(Of course, if the file is already larger than that, the current modulus
will be larger than 10000.)
3. Neither of the above will reserve room in OVER.30. If you know what
your data will be like, then you know how much overload you'll need.
If you have the luxury of being able to create bogus data, you could
write many large records so that OVER.30 grows. Then delete all the
bogus large records.
Other han that, I don't know a way to make OVER.30 grow.
-------
u2-users mailing list
[email protected]
To unsubscribe please visit http://listserver.u2ug.org/