We are using an app. that has 8 processes, each reading/updating records (in parallel) from 255 C-ISAM files. Performance begin to be an issue (it can be seen on I/O, %wio averages to 80-90%), specially after some files reach 4 index b-tree level (we have about 12K data records/file).
ISAMBUFS is to deafult (16). And from the manual:
"Typically, you should allocate four buffers for every index that is in use at any
one time. You must allocate a minimum of four buffers (total)."
Still it's not to clear... should I have ISAMBUFS set to
4(per index) * 3 (no. of indexes) * 255 (files)
4(per index) * 3 (no. of indexes) * 8 (process)
4(per index) * 3 (no. of indexes) * 8 (process) * 255 (files)
I'm thinking that maybe C-ISAM is running out of its buffer and begin to do more and more I/O
We are using C-ISAM - 7.24.UC1, on a HPUX 11i (PA-RISC)
A bcheck on a typical file shows:
Checking dictionary and file sizes.
Index file node size = 1024
Current C-ISAM index file node size = 1024
Index 1 = unique key (0,4,2) (4,4,2)
1357 index node(s) used -- 4 index b-tree level(s) used
Index 2 = duplicates (8,4,2) (12,4,2)
612 index node(s) used -- 4 index b-tree level(s) used
Index 3 = duplicates (16,4,2) (20,4,2)
609 index node(s) used -- 4 index b-tree level(s) used
2589 index node(s) used, 492 free -- 9232 data record(s) used, 2146 free.