Segment Count
By default, CREATE INDEX
/REINDEX
will create as many segments as there are CPUs on the host machine. This can be changed using the
target_segment_count
index option.
This property is attached to the index so that during REINDEX
, the same value will be used.
It can be changed with ALTER INDEX, like so:
However, a REINDEX
is required to rebalance the index to that segment count.
For optimal performance, the segment count should equal the number of parallel workers that a query can receive, which is controlled by
max_parallel_workers_per_gather
. If max_parallel_workers_per_gather
is greater than the number of CPUs on the host machine, then increasing the target segment count to match max_parallel_workers_per_gather
can improve query
performance.
target_segment_count
is merely a suggestion.
While pg_search
will endeavor to ensure the created index will have exactly this many segments, it is possible for it
to have less or more. Mostly this depends on the distribution of work across parallel builder processes, memory
constraints, and heap size.