Edit - can't reply for some reason. I am on UD 8 myself but they are on 7.3 with no upgrade coming anytime soon, so wholefile is out. File has gone all the way down to zero records several times and we're still at ~2M modulo. I have come to the conclusion that merging isn't a thing dynamic files do on this release, so am working this problem from another angle. These files don't have an optimal config, they've got a bunch of random stuff flowing through them.
Unidata 7.3.7 Windows
I need help understanding merging and dynamic files.
I have a file that I think should be merging, but it never does. Disk space is not a concern, I just need to get the modulo down to something reasonable.
Normal state for this file is a low recordcount, but periodic updates push huge amounts of data to it temporarily. Converting it to static or changing it to a DIR-type file are both not options. (Yes, this situation isn't ideal. No, I don't have control over it.)
From Jonathan Smith's excellent articles, I know REBUILD.FILE, CLEAR.FILE, and RESIZE will trigger a merge. I need this to happen when users are on, though.
My theory is that whatever event triggers a merge only happens at times when there is also a condition that prevents the merge. I'm not opposed to writing something to "encourage" the merge if this is true, I am just not sure what that thing would be. My alternate theory is, I completely misunderstand how merging works.
Things I know that prevent a file from merging which do not seem to be the case here:
- Records in last group
- Active SELECT against the file
- Active COUNT operation on the file
- Combined load factor above MERGE.LOAD
- Having a min modulo higher than current modulo
What do I have to make happen to get this file to merge?
Here's the info for one of the more ridiculous files:
Number of groups in file (modulo) = 2311239
Minimum groups of file = 3
Hash type = 0, blocksize = 512
Split load = 60, Merge load = 40
Split/Merge type = KEYONLY
Group Keys Key Loads Percent
=================================================
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
(etc. - nothing in last group)
Number of groups in file (modulo) = 2311239
Dynamic hashing, hash type = 0
Split/Merge type = KEYONLY
Block size = 512
File has 86 groups in level one overflow.
Number of records = 126
Total number of bytes = 38274
Average number of records per group = 0.0
Standard deviation from average = 0.0
Average number of bytes per group = 0.0
Standard deviation from average = 2.6
Average number of bytes in a record = 303.8
Average number of bytes in record ID = 30.0
Standard deviation from average = 191.5
Minimum number of bytes in a record = 110
Maximum number of bytes in a record = 853
Minimum number of fields in a record = 21
Maximum number of fields in a record = 21
Average number of fields per record = 21.0
Standard deviation from average = 0.0
File has 1 over files, 2 prime files
Thanks very much for any help.