Which index memory settings should I use?
Answer: You can set your index memory with the DEFAULT_INDEX_MEMORY and MAX_INDEX_MEMORY system parameters. You can also set your index memory at runtime with the CREATE INDEX memory parameter in the parameter string.
You should aim to set the DEFAULT_INDEX_MEMORY value as high as possible, without causing paging.
You can also improve indexing performance by increasing the SORT_AREA_SIZE system parameter.
Oracle recommends that you use a large index memory setting. Large settings, even up to hundreds of megabytes, can improve the speed of indexing and reduce fragmentation of the final indexes. However, if you set the index memory setting too high, then memory paging reduces indexing speed.
With parallel indexing, each stream requires its own index memory. When dealing with very large tables, you can tune your database system global area (SGA) differently for indexing and retrieval. For querying, you want to get as much information cached in the SGA block buffer cache as possible. So you should allocate a large amount of memory to the block buffer cache. Because this approach does not make any difference to indexing, you would be better off reducing the size of the SGA to make more room for large index memory settings during indexing.
You set the size of SGA in your Oracle Database initialization file.
See Also:
-
Oracle Text Reference to learn more about Oracle Text system parameters
-
Oracle Database Administrator’s Guide for more information on setting SGA related parameters
-
Oracle Database Performance Tuning Guide for more information on memory allocation
-
Oracle Database Reference for more information on setting the
SORT_AREA_SIZEparameter