Kbase P27013: Why does idxcheck take such a long time to run?
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  12/29/2008 |
|
Status: Verified
GOAL:
Why does idxcheck take such a long time to run?
GOAL:
How to speed up idxcheck ?
FACT(s) (Environment):
Progress 9.x
FIX:
PROUTIL -C IDXCHECK index checker was designed to check indexes for corruption as sensitively as possible.
SYNTAX:
proutil <database name> -C idxcheck [ < inputfile >outputfile ]
It peforms these checks as follows:
1.) It checks that all index entries associated with each record can be found
2.) It verifyies that each value in the index is in the associated record
3.) It does a validation check that all index blocks can be referenced
An appropriate error will be reported if any of these fail. This operation will take time as there are a lot of reads taking place, depending on the number of records and indexes associated with each record.
If there are other processes running on the machine that are load intensive, this will impact the performance of the operation. It is worth checking the CPU utilisation beforehand and verifying what other processes are running at the same time before and during the undertaking of this operation.
One might consider running with a large -B, but this can only be guaged through testing. There is a 'sweet-point' above which there is no further gain, because it depends on how blocks are being paged out of the buffer pool. It might help during the phase when the index validates to the RM data as opposed to the RM data being validated against the index data. In the first case, it would help if the available memory will allow the entire table and index to fit into the buffer pool.
Cautionary note: increasing -B too high will result in termination with
** stget: out of storage. (6498)
One may also consider running an IDXCOMPACT beforehand to compact the index leafs. This seperate operation will initially add to the total time, but future IDXCHECK operations will benefit.
Additionally, excluding word indexes from the exercise may be considered and then running a "blind" idxbuild on these specific indexes as a seperate operation.
Otherwise, there is not much else to improve the performance of this utility in Progress 9. It is an intensive check and by that nature, will take time.